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

时间:2009-12-28 18:42:27

标签: php oop object

当谈到面向对象的程序时,我真的很无能为力,如果这很明显,请原谅我......

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

类似的东西:

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

我希望有一种更优雅的方式来实现这一点,沿着XPath的路线(但当然它不一定非常接近XPath,只是简单的事情)。

因此,如果我知道我需要的属性,PHP中是否有办法检索具有该属性的任何和所有对象?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您始终只需对属性b

执行isset()检查即可
if (isset($object->b)) {
    $info = $object->a;
}

要做出假设,因为你使用的是Zend,它可能是这样的

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