2009-12-28 66 views
0

当谈到面向对象的编程时,我真的很无能,所以请原谅我,如果这是显而易见的...用于在PHP中查找对象的特定实例的内置方法?

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

喜欢的东西:

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

我希望有一个更优雅的方式来做到这一点,沿的XPath线(但肯定它没有被远程接近的XPath,只是一些如简单)。

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

回答

1

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

+0

谢谢!我担心这是答案,但我很高兴我不会盲目地错过文档中的某些内容。 Upvote现在,我会在今天的某个时间标记这个答案,除非有人在那里可以证明相反的事实。 – Anthony 2009-12-28 18:52:33

0

你总是可以简单地一[执行检查isset()的性质B

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

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

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

该属性将存在于子对象的所有实例中(据我所知)。诀窍是知道属性值是否与我需要的匹配。 – Anthony 2009-12-28 18:54:27

相关问题