比方说,我想要一个人员列表(人员数量是恒定的)。现在,想象每个人都必须与其他所有人成为朋友(这并不令人毛骨悚然,因为分配朋友的顺序很重要)。显然,朋友是人类,是同一种对象。
我将类定义如下:
class Person
{
public $friends = [];
function new_freind($person)
{
// $person is passed as an object of the same type
$this->friends[] = $person;
}
}
结果,由于永久地相互引用对象,程序陷入无限循环。
我想知道您是否可以分享您的想法以防止出现此问题。
我的想法是在$friends
内存储某种键,而不是实际的对象。
答案 0 :(得分:0)
每个人都有自己的ID:
class Person {
static $index = 0;
public $id;
public function __constructor() {
$this->id = ++self::$index;
}
分配时检查$this->id !== $person->id