以下代码中的注释显示了我要完成的工作,这非常简单:我希望能够使用 PHP 内置常量(或其他构造)来引用父类的名称,例如__CLASS__
, 但是它指的是父类而不是当前类(例如parent::__CLASS__
)(另外,虽然代码没有显示它,但如果我有一个子类,那么在这样的类中,我希望能够通过类似parent::parent::__CLASS__
if的方式引用父类尽可能)。
class ParentClass {
protected $foo;
function __construct() {
$this->foo = "hello";
}
}
class DerivedClass extends ParentClass {
public $bar;
public $baz;
function __construct($bar) {
// I want to be able to write
// something like parent:__CLASS__
// here in place of 'ParentClass'
// so that no matter what I rename
// the parent class, this line will
// always work. Is this possible?
// if (is_a($bar, parent::__CLASS__)) {
if (is_a($bar, 'ParentClass')) {
$this->bar = $bar;
} else {
die("Unexpected.");
}
$this->baz = "world";
}
public function greet() {
return $this->bar->foo . " " . $this->baz;
}
}
$d = new DerivedClass(new ParentClass());
echo $d->greet();
输出:
hello world