在PHP中获取子类的名称

时间:2009-02-11 21:22:08

标签: php oop

让我们说我正在建立一个基础类,将由儿童班延伸。因此,基类称为Base,子类可以是Child1Child2等。

在基类的构造函数中,如何获取Child1 / Child2的值?

这都是使用PHP

3 个答案:

答案 0 :(得分:10)

简单地调用get_class($ this) - 请注意,基类方法在改变其行为方面没有实际的业务,具体取决于哪个派生类正在使用它。这是导出一个类的全部意义:)

答案 1 :(得分:10)

基类应该永远不依赖于有关子类的信息---

回答你的问题:

class base {
    public function __construct() {
        print "Class:" . get_class($this) . "\n";
    }
}

class child extends base{
    public function __construct() {
        parent::__construct();
    }
}
$c = new child();

仅供将来参考 - 这可以使用get_called_class()在静态上下文中实现,但这仅适用于PHP> = 5.3

答案 2 :(得分:0)

编辑:不知道get_class,忽略这个;)

您可以尝试__CLASS__,但可能无法正常使用。

解决方法可以是将类名指定为基类的属性。

编辑:这不起作用(我使用了以下代码)     construct(){             echo __CLASS;         }     }

class b extends a {}

$b = new b;

我建议将$ b的名称作为参数传递给A,例如:

<?php
class a {
    protected $name;
    public function __construct() {
        echo $this->name;
    }
}

class b extends a {
    protected $name = __CLASS__;
}

$b = new b;