从另一个文件中解析文件名

时间:2008-10-14 18:29:55

标签: php file class-design

我目前可以进行以下操作:

class SubClass extends SuperClass {
  function __construct() {
    parent::__construct();
  }
}

class SuperClass {
  function __construct() {
    // this echoes "I'm SubClass and I'm extending SuperClass"
    echo 'I\'m '.get_class($this).' and I\'m extending '.__CLASS__;
  }
}

我想用文件名(__FILE__做类似的事情,但动态评估);我想从超类知道子类所在的文件。有可能以任何优雅的方式吗?

我知道你可以用get_included_files()做点什么,但这不是很有效,特别是如果我有很多实例的话。

2 个答案:

答案 0 :(得分:2)

您可以使用反射。

$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared

答案 1 :(得分:0)

呃,不是真的,我能想到的。每个子类都需要有一个显式实现的方法,返回__FILE__,这首先完全破坏了继承点。

我也很好奇为什么这样的事情会有用。