Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中查找特定对象实例的内置方法?_Php_Oop_Object - Fatal编程技术网

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

在PHP中查找特定对象实例的内置方法?,php,oop,object,Php,Oop,Object,对于面向对象编程,我真的很无知,所以如果这是显而易见的,请原谅我 我使用的是Zend扩展,它将请求作为嵌套对象返回。我需要属性a基于对象是否具有属性b。现在,我正在使用一个带有条件的foreach循环来搜索属性b,如果我得到匹配项,则将变量设置为属性a 比如: foreach($nested_object as $object) { if($object -> foo -> bar == "match") { $info = $object -> s

对于面向对象编程,我真的很无知,所以如果这是显而易见的,请原谅我

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

比如:

 foreach($nested_object as $object) {
    if($object -> foo -> bar == "match") {
         $info = $object -> stuff -> junk;
    }
 }
我希望有一种更优雅的方法来实现这一点,就像XPath一样(但当然,它不一定离XPath很近,只是简单而已)


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

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

您始终可以简单地创建一个
isset()
检查属性b

if (isset($object->b)) {
    $info = $object->a;
}
假设一下,因为您使用的是Zend,它可能是这样的

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

谢谢我担心这就是答案,但我很高兴我没有盲目地遗漏文档中的某些内容。现在,我将在今天的某个时候将其标记为答案,除非有人能证明相反的结果为真。该属性将存在于子对象的所有实例中(据我所知)。诀窍是知道属性值是否与我需要的匹配。