有时候我迷路了,并开始怀疑我是否在用PHP编写课程时做得很好。
例如,这些是非常基础和简单的类,
class base {
protected $connection = null;
/**
* Set the contructor for receiving data.
*/
public function __construct($connection)
{
$this->connection = $connection;
}
public function method()
{
print_r(get_object_vars($this));
}
}
class child extends base{
public function __construct(){
}
public function method()
{
print_r(get_object_vars($this));
}
}
我从child
扩展了base
类。我将一些数据/信息传递给base
类。我希望child
类继承我刚刚传递的数据/信息。例如,
$base = new base("hello");
$child = new child();
$child->method();
所以我认为我得到Array ( [connection] => hello )
作为我的答案。
但我实际上得到了Array ( [connection] => )
这意味着我必须每次将这段数据传递到从基础扩展的子类。否则我不会得到Array ( [connection] => hello )
作为我的答案。
是否有正确的方法来编写子类以继承父类传递的数据?
答案 0 :(得分:0)
似乎你在某种程度上混淆了模板(类)和对象(类的实例)。
如何使用某些给定的初始值对类base
的一个对象进行实例化会对类child
的其他对象产生什么影响?
类child
的实例不会动态“继承”类base
的实例的某些属性。
如果您想从base
类__construct
方法初始化一些受保护的属性,并且您希望也可以从child
类中进行初始化,而无需重新启动 - 编写__construct
方法,然后您不得覆盖__construct
类的child
方法。