我有一个User
类扩展Id
抽象类。不知怎的,我将介绍另一个名为Event
的类,它也扩展了Id
类。 __construct()
方法非常相似,所以我想将构造函数代码放在Id
类中。
这是我的__construct()
方法:
class Event extends Id
{
public function __construct($id, $object){
$this->id = $id;
foreach($object as $property => $value) {
if (property_exists($this, $property)) $this->$property = $value;
}
}
}
class User extends Id
{
public function __construct($id, $object){
$this->id = $id;
foreach($object as $property => $value) {
if (property_exists($this, $property)) $this->$property = $value;
}
}
}
但是,如果我将该方法放在Id
类中,PHP会在$this->$property = $value;
警告我。它表示我在private
或User
类中有一些属性Event
,因此无法在Id
类中启动。
我想要的是在保留这些变量的同时重用我的代码private
(因为除了父类之外我不希望其他人访问它们!)
答案 0 :(得分:0)
一些选项:
使用protected
变量
您可以使用Reflection作弊并设置私有变量。
使用特征(5.4)导入公共__construct
重构一下。例如,在父级调用的子类中有setProperty
,或实现__set
等