让我们说我正在建立一个基础类,将由儿童班延伸。因此,基类称为Base
,子类可以是Child1
,Child2
等。
在基类的构造函数中,如何获取Child1 / Child2的值?
这都是使用PHP
答案 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;