我有这个班级
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');
代码拒绝我创建对象
由于
答案 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;
}
}
说完这个,我会质疑这个用处。这听起来像是一个问题的秘诀。作为一些业务逻辑和数据库交互的一部分,您应该跟踪唯一数据,可能不是在语言级别强制执行的内容。