PHP получить путь к родительскому классу - PullRequest
7 голосов
/ 20 мая 2011

пример

index.php // Я знаю, где находится этот файл

$class = new childclass();
$class->__initComponents();

somefile.php // Я знаю, где находится этот файл

Class childclass extends parentclass {

}

someparentfile.php // Я не знаю, где находится этот файл

Class parentclass {
  function __initComponents(){
    //does something
  }
}

Мне нужно выяснить, где находится someparentfile.php.

Причина:

Я отлаживаю сложный php-код, который написал кто-то другой, мне нужно выяснить, в каком файле содержится код, определяющий параметр класса.

Я обнаружил, что это метод класса, вызывающий функцию, которая делает это:

$class->__initComponents();//the parameter is defined somewhere in there

Проблема в том, что эта функция находится в родительском классе "MyClass" указанного выше класса $, и я понятия не имею, где находится родительский класс.

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

p.s. загрузка всего приложения с последующим использованием текстового поиска была бы неразумной.

Ответы [ 2 ]

10 голосов
/ 20 мая 2011

Вы можете использовать Reflection

$object = new ReflectionObject($class);
$method = $object->getMethod('__initComponents');
$declaringClass = $method->getDeclaringClass();
$filename = $declaringClass->getFilename();

Для получения дополнительной информации о том, что возможно с Reflection-API, см. руководство

однако для простоты я предлагаю скачать исходный код и отладить его локально.

3 голосов
/ 28 ноября 2011
   $object = new ReflectionObject($this); // Replace $this with object of any class.

   echo 'Parent Class Name: <br>';
   echo $object->getParentClass()->getName();

   echo '<br>Parent Class Location: <br>';
   echo $object->getParentClass()->getFileName();
...