当谈到面向对象的程序时,我真的很无能为力,如果这很明显,请原谅我......
我正在使用Zend扩展,它将请求作为嵌套对象返回。我需要基于对象是否具有属性a
的属性b
。现在我正在使用带有条件的foreach循环搜索属性b
,如果我得到匹配,则将我的变量设置为属性a
。
类似的东西:
foreach($nested_object as $object) {
if($object -> foo -> bar == "match") {
$info = $object -> stuff -> junk;
}
}
我希望有一种更优雅的方式来实现这一点,沿着XPath的路线(但当然它不一定非常接近XPath,只是简单的事情)。
因此,如果我知道我需要的属性,PHP中是否有办法检索具有该属性的任何和所有对象?
答案 0 :(得分:1)
没有内置的自动方式来做到这一点。最接近的OOP方法是向集合类(您的嵌套对象)添加一个方法,该方法将执行搜索并返回正确的对象。该方法看起来很像你的代码。如果你不需要在一个以上的地方做这个,那么在我看来你是以“正确”的方式(现在)这样做。
答案 1 :(得分:0)
您始终只需对属性b
执行isset()
检查即可
if (isset($object->b)) {
$info = $object->a;
}
要做出假设,因为你使用的是Zend,它可能是这样的
if (isset($this->request)) {
$info = $this->request;
}