Как найти, где реализация функции находится в PHP в этом случае? - PullRequest
1 голос
/ 11 февраля 2010

Я просто просматривал рабочий процесс Zend Framework и не могу найти, где находится функция "findByUri ()", я нашел класс, которому он принадлежит, просто выгрузил его, но прошел через иерархию этого класса (родители, интерфейсы и так далее) Я не могу найти это. Я нашел, где это называется от

....
 call_user_func_array(
            array($this->getContainer(), $method),
            $arguments);
    ...

но его там нет (класс, который возвращает GetContainer ())

любая идея, я знаю, что вы можете назначить переменную классу просто с помощью $ class-> someVar = ...; Но никогда не делал этого с функциями класса ... Спасибо

Ответы [ 4 ]

1 голос
/ 11 февраля 2010

Нет метода с таким именем во всем ZF. Вероятно, это магический аксессор, созданный с помощью __call метода $this->container. Я взял предоставленный вами фрагмент от Zend_View_Helper_Navigation_HelperAbstract, поэтому это должен быть любой из классов, относящихся к пакету Zend_Navigation.

EDIT
Из справочного руководства ZF по контейнерам Zend_Navigation :

Контейнеры имеют методы поиска для поиска страниц. Это findOneBy ($ property, $ value), findAllBy ($ property, $ value) и findBy ($ property, $ value, $ all = false). Эти методы будут рекурсивно искать в контейнере страницы, соответствующие заданному значению $ page -> $ property == $. Первый метод, findOneBy (), вернет одну страницу, соответствующую свойству с данным значением, или NULL, если его не удается найти. Второй метод вернет все страницы со свойством, соответствующим заданному значению. Третий метод вызовет один из двух предыдущих методов в зависимости от флага $ all.

Методы поиска также можно использовать волшебным образом, добавив имя свойства к findBy, findOneBy или findAllBy, например, findOneByLabel ('Home') возвращает первую подходящую страницу с меткой Home. Другими комбинациями являются findByLabel (...), findOnyByTitle (...), findAllByController (...) и т. Д. Методы поиска также работают с пользовательскими свойствами, такими как findByFoo ('bar').

1 голос
/ 11 февраля 2010

Я использую Agent Ransack для поиска по кодовым базам, которые мне не принадлежат. Вы бы искали эту строку:

"function findByUri"
0 голосов
/ 11 февраля 2010

Если это действительно реализация функции, которую вы ищете, я бы сказал, что для этого нужна PHP IDE. Каждая достойная PHP IDE может узнать, где была определена функция.

Похожие: Какая-нибудь хорошая PHP IDE, желательно бесплатная или дешевая?

0 голосов
/ 11 февраля 2010

grep ваш друг.

Из скорлупы:

grep -ir "function findByUri" .

Подробнее о команде grep:

http://unixhelp.ed.ac.uk/CGI/man-cgi?grep

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...