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