代码之家  ›  专栏  ›  技术社区  ›  Anthony

在PHP中查找对象特定实例的内置方法?

  •  0
  • Anthony  · 技术社区  · 15 年前

    在面向对象的编程方面我真的很笨,所以如果这很明显,请原谅我…

    我使用的是Zend扩展,它将请求作为嵌套对象返回。我需要财产 a 基于对象是否具有属性 b .现在我使用一个带有条件的foreach循环来搜索属性 如果我得到一个匹配项,将我的变量设置为属性 .

    类似:

     foreach($nested_object as $object) {
        if($object -> foo -> bar == "match") {
             $info = $object -> stuff -> junk;
        }
     }
    

    我希望有一种更优雅的方法来实现这一点,沿着xpath的路线(但当然,它不必远程接近xpath,只是简单的一点)。

    所以,如果我知道我需要的属性,在PHP中有没有一种方法来检索任何和所有具有该属性的对象?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Scott Saunders    15 年前

    没有一种内置的自动方式可以做到这一点。最近的OOP方法是向集合类(嵌套对象)添加一个方法,该方法将执行搜索并返回正确的对象。这个方法看起来很像您的代码。如果你不需要多做一个地方,那么在我看来,你现在做的是“正确的”方式。

        2
  •  0
  •   nwhiting    15 年前

    你总是可以简单地用peform a isset() 检查属性B

    if (isset($object->b)) {
        $info = $object->a;
    }
    

    假设一下,因为你在使用Zend,它可能是这样的。

    if (isset($this->request)) {
        $info = $this->request;
    }