#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.