__CLASS__的版本,它在运行时而不是在编译时绑定

时间:2015-02-09 00:53:50

标签: php runtime subclass classname dynamic-binding

在下面的PHP代码中,我想用函数__CLASS__(或类似的东西)替换Foo类中的__X__()魔术常量,以便在方法{{1从hello()类的实例$bar调用它,它会打印Bar(而不是hello from Bar)。我想这样做 不覆盖hello from Foo内的hello()

基本上,我想要一个Bar版本,它在运行时而不是在编译时动态绑定。

__CLASS__

输出:

class Foo {

  public function hello() {

    echo "hello from " . __CLASS__ . "\n";

  }

}

class Bar extends Foo {

  public function world() {

    echo "world from " . __CLASS__ . "\n";

  }

}

$bar = new Bar();
$bar->hello();
$bar->world();

我想要这个输出(不在hello from Foo world from Bar 内覆盖hello()):

Bar

1 个答案:

答案 0 :(得分:2)

您可以简单地使用get_class(),如下所示:

echo "hello from " . get_class($this) . "\n";
echo "world from " . get_class($this) . "\n";

输出:

hello from Bar
world from Bar