PHP - 类对象的唯一属性

时间:2016-01-16 15:13:33

标签: php oop

我有这个班级

class MyClass{
    private $id;
    private $name;
    public function __construct ($id, $name){
        $this->name = $name;
    }
}

$ob1 = new MyClass(1, 'earth');
$ob2 = new MyClass(2, 'sky');
$ob3 = new MyClass(3, 'ocean');

我希望我的对象$ ob1,$ ob2和$ ob3具有不同的属性$ id。例如,当我这样做时:

$ob4 = new MyClass(3, 'wood');

代码拒绝我创建对象

由于

1 个答案:

答案 0 :(得分:2)

您需要跟踪static类属性中的ID:

class MyClass {
    static private $ids = [];

    public function __construct($id) {
        if (in_array($id, self::$ids)) {
            throw new Exception("Object with id $id already constructed");
        }
        self::$ids[] = $id;
    }
}

说完这个,我会质疑这个用处。这听起来像是一个问题的秘诀。作为一些业务逻辑和数据库交互的一部分,您应该跟踪唯一数据,可能不是在语言级别强制执行的内容。