PHP:动态获取扩展当前类的类的名称
我有一个抽象类和一个扩展类:PHP:动态获取扩展当前类的类的名称,php,php-5.3,Php,Php 5.3,我有一个抽象类和一个扩展类: abstract class MyAbstract { public function getName(){echo static::class;} } class MyExtends extends MyAbstract {} 我希望在调用getName()时动态获取任何扩展类的名称: $c = new MyExtends(); echo $c->getName(); // expect: "MyExtends" 这在PHP5.6+()上运行得
abstract class MyAbstract {
public function getName(){echo static::class;}
}
class MyExtends extends MyAbstract {}
我希望在调用getName()
时动态获取任何扩展类的名称:
$c = new MyExtends();
echo $c->getName(); // expect: "MyExtends"
这在PHP5.6+()上运行得很好,但我正在从事的项目仅限于PHP5.3,我没有改变这一点的手段。在该版本上,将引发解析错误:
分析错误:语法错误,意外的T_类,应为T_字符串或T_变量或“$”
因此,我将函数修改为:
public function getName(){echo __CLASS__;}
当然,这只是呼应父名称--MyAbstract
,所以它不起作用。我唯一想到的是在每个扩展类中使用新的实现覆盖getName()
,但这并不能很好地扩展:继承的整个要点是将公共代码库集中在父类中(当然,真正的函数不是一个线性函数)
您知道如何在PHP 5.3中从抽象父类的上下文中动态获取扩展类名吗?您可以使用以下方法获取类名:
<?php
abstract class MyAbstract
{
public function getName()
{
echo get_class($this);
}
}
class MyExtends extends MyAbstract
{
}
$c = new MyExtends();
echo $c->getName(); // expect: "MyExtends"
也许:
public function getName(){get_class($this);}
不过还没有测试过。谢谢。是的,它按预期工作。请添加文档链接以改进答案:@belletJuice-link可用,但德语版本为:P-改为英语。酷网站(ideone.com);我不知道,你的直觉是正确的。它工作得很好。祝你好运