Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:动态获取扩展当前类的类的名称_Php_Php 5.3 - Fatal编程技术网

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);我不知道,你的直觉是正确的。它工作得很好。祝你好运