2009-12-28 3 views
0

Я действительно незнаю, когда дело доходит до объектно-ориентированных программ, поэтому простите меня, если это очевидно ...Встроенный метод для поиска конкретного экземпляра объекта в PHP?

Я использую расширение Zend, которое возвращает запрос как вложенный объект. Мне нужно свойство a, если объект имеет свойство b. Прямо сейчас я использую цикл foreach с условием для поиска свойства b, и, если я получу совпадение, установите для моей переменной значение a.

Что-то вроде:

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

Я надеялся, что там было более элегантный способ сделать это, по линии XPath (но, конечно, он не должен быть отдаленно близко к XPath, просто что-то, как просто).

Итак, если я знаю требуемое свойство, есть ли способ в PHP для извлечения любых объектов с этим свойством?

ответ

1

Нет встроенного автоматического способа сделать это. Ближайшим способом ООП является добавление метода к классу коллекции (ваш вложенный объект), который будет выполнять поиск и возвращает правильный объект (ы). Этот метод будет очень похож на ваш код. Если вам не нужно делать это более чем в одном месте, то вы делаете это «правильным» способом (на данный момент), на мой взгляд.

+0

Спасибо! Я боялся, что это был ответ, но я рад, что не просто слепо пропустил что-то в документации. Upvote пока, я буду отмечать этот ответ когда-нибудь сегодня, если кто-то из них не может показать обратное, это правда. – Anthony

0

Вы всегда можете просто peform на isset() чек на имущество б

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

Чтобы сделать предположение, так как вы используете Zend это может быть что-то вроде этого

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

Имущество будет существовать во всех экземплярах субобъекта (насколько я знаю). Трюк - это знать, соответствует ли значение свойства тому, что мне нужно. – Anthony