将参数传递给PHP中的父类构造函数?
问题描述:
我父母在那里由孩子继承2班。将参数传递给PHP中的父类构造函数?
class parentClass
{
private $table_name='';
public function __construct($argument)
{
$this->table_name=$argument;
echo $this->table_name;
}
}
class child extends parentClass
{
private $table="student";
public function __construct()
{
parent::__construct($this->table);
}
}
有这样下面的一些东西已被使用,但我无法理解如何以及为什么。
$args = func_get_args();
call_user_func_array(array($this, 'parent::__construct'), $args);
帮我
什么应该是正确的代码来实现正确的逻辑 并请参考以获得更好的理解支持。
答
不是一个直接的答案,但是如果我正确地读取了代码,您并不是真的想将一个变量/值传递给构造函数。相反,你想传递一个像表名一样的固定类属性。
在这种情况下,你可以在子类中使用常量,并设置在父类的构造。如果你想要这样做的话,子类不需要单独的构造函数。
class parentClass
{
private $table_name;
function __construct() {
$this->table_name = static::TABLE;
echo $this->table_name;
}
}
class childClass extends parentClass
{
const TABLE = "student";
}
$obj = new childClass();
事实上,继承的概念是一个有点不同,你不能调用构造函数直接,它被自动调用。 沿着父类的$参数传递,您需要提供它的子类。 – Merv
@Merv I一些如何需要** $ table **的值移动到** $ table_name **,即孩子到父母。 –
@Merv父类的构造函数只有在没有参数的情况下才能被自动调用。但即使在这种情况下,这不是PHP的工作原理。程序员必须在派生类的构造函数中显式调用父类的构造函数。 – axiac