Получение путей к файлам подклассов

#php #oop

#php #ооп

Вопрос:

Чтобы получить имя подкласса, я использую get_called_class() .

Что я должен использовать, чтобы получить путь к файлу подкласса?

Ответ №1:

В частности, используйте отражение ReflectionClass::getFileName() . То, как вы создаете свой ReflectionClass, полностью зависит от текущей области, например

 // globally
$reflectionClass = new ReflectionClass('SubClassName');

// within the sub class
$reflectionClass = new ReflectionClass(__CLASS__);

// within either sub or parent class in a static method
$reflectionClass = new ReflectionClass(get_called_class());

// within either sub or parent class, provided the instance is a sub class
$reflectionClass = new RelfectionObject($this);

// filename
$fn = $reflectionClass->getFileName();

// what I assume you mean by "path"
$path = dirname($fn);
  

Комментарии:

1. Мне нужно получить путь, а не имя файла, и это должен быть путь к подклассу, а не к текущему классу 😕

2. @EmanuilRusev я обновил свой ответ. Не могли бы вы уточнить, что вы подразумеваете под «путем»?

3. Спасибо за редактирование! Основываясь на имени метода, я ошибочно предположил getFileName() , что возвращает имя файла, а не путь.

4. @EmanuilRusev Возможно, вам следовало прочитать документацию, на которую я ссылался. Я также хотел бы увидеть комментарий от downvoter относительно их рассуждений

5. Я прочитал это. Это часть проблемы. Вот что он говорит: Gets the filename of the file in which the class has been defined.