@HellWalk

Как отыскать __callStatic() метод?

Есть проект, в нем есть наблюдаю примерно такой код:

/**
* @method static self testMethod($param1, $param2)
*/
class Shirt extends Clothes {}
 
class Clothes
{
    public static function __callStatic($method, $params) {}
}
 
Shirt::testMethod('param1', 'param2');


Как понять, что в итоге обрабатывает testMethod(), если поиск по всему проекту, с указанием этого метода, находит только вызовы метода и комментарий в классе?

Метод __callStatic в родительском классе пустой.

Знакомый посоветовал через xDebug проследить, но с его настройкой под проект пока геморрой один. Ищу альтернативные способы.
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 2
berezuev
@berezuev
#define TRUE FALSE
Только дебаггером.
Может быть вообще где-то рефлексия используется, и через Reflection API со стороны есть внедрение в рантайм.
Ответ написан
Комментировать
@HellWalk Автор вопроса
Задача ушла на второй план, а сегодня вновь наткнулся на этот метод, и в очередной раз решил разобраться, тем более дебагер уже настроен.

Оказалось, что конкретно в моем случае концов вообще не найти - в проекте используется Fhalcon (будь он проклят), и механика работы его моделей вообще выходит за рамки PHP:

Phalcon\Mvc\Model is the first ORM written in Zephir/C languages for PHP, giving to developers high performance when interacting with databases while is also easy to use.


Т.е. формально есть класс Phalcon\Mvc\Model, и в нем есть методы - но они все пустые, и даже если закомментировать:
public static function __callStatic($method, $arguments) {}

Модели все равно продолжат работать - т.е. методы в этом классе прописаны просто для того, чтобы показать, что такой функционал есть, и добавить к ним описание.

Т.е. с этой магией, которую творит фалкон, приходится только смириться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы