Я ищу get_called_class()
эквивалент для __FILE__
... Может быть, что-то вроде get_included_file()
?
У меня есть набор классов, которые хотели бы знать, в каком каталоге они существуют. Примерно так:
<?php
class A {
protected $baseDir;
public function __construct() {
$this->baseDir = dirname(__FILE__);
}
public function getBaseDir() {
return $this->baseDir;
}
}
?>
И в каком-то другом файле, в другой папке ...
<?php
class B extends A {
// ...
}
class C extends B {
// ...
}
$a = new A;
echo $a->getBaseDir();
$b = new B;
echo $b->getBaseDir();
$c = new C;
echo $c->getBaseDir();
// Annnd... all three return the same base directory.
?>
Теперь я мог бы сделать что-нибудь из гетто, например, добавить $this->baseDir = dirname(__FILE__)
в каждый расширяющийся класс, но это кажется немного ... гетто. В конце концов, мы говорим о PHP 5.3, верно? Разве это не должно быть будущее?
Есть ли другой способ получить путь к файлу, в котором был объявлен класс?