php设置父级别的值

时间:2012-02-24 03:16:43

标签: php oop

我有一个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;警告我。它表示我在privateUser类中有一些属性Event,因此无法在Id类中启动。

我想要的是在保留这些变量的同时重用我的代码private(因为除了父类之外我不希望其他人访问它们!)

1 个答案:

答案 0 :(得分:0)

一些选项:

  • 使用protected变量

  • 您可以使用Reflection作弊并设置私有变量。

  • 使用特征(5.4)导入公共__construct

  • 重构一下。例如,在父级调用的子类中有setProperty,或实现__set