【发布时间】:2011-02-12 17:06:30
【问题描述】:
我正在寻找与__FILE__ 等效的get_called_class() ... 可能类似于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,对吧?这不应该是未来吗?
还有其他方法可以获取声明类的文件的路径吗?
【问题讨论】:
-
我认为唯一的方法是“贫民窟”,但你为什么要这样做,也许还有另一种解决问题的方法?
-
@Josiah 这是应用程序的视图层。每个视图对象(通常)由一个视图类和一个视图模板文件组成。在上面的示例中,A、B 和 C 是视图类。每个在其父目录中都有一个匹配的模板文件。不过,最好定义一次所述目录,而不是每次都...
标签: php inheritance php-5.3 late-static-binding