PHP - 类对象的唯一属性


PHP - unique attribute for objects of a class

我有这个类

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');

我希望我的对象 $ob 1、$ob 2 和 $ob 3 具有不同的属性$id。例如,当我制作这个时:

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

代码拒绝我创建对象

谢谢

您需要跟踪 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;
    }
}

话虽如此,我还要质疑这样做的用处。这听起来像是问题的秘诀。您应该跟踪唯一数据作为某些业务逻辑和数据库交互的一部分,而不是作为在语言级别强制实施的东西。