我已到处寻找,似乎无法找到答案。我想知道的是,如果在PHP中使用递归对象是安全的还是很好的做法。要创建一个对象作为另一个对象,包含与该包含对象的引用的属性的属性...使用PHP对象设置递归属性是否安全?
<?php
class User
{
public $database;
public function __construct() {
$this->database = new Database($this);
}
}
Class Database
{
private $user;
public function __construct(User $user) {
$this->user = $user;
}
public function doSomethingForUser() {
// Call db or get info for this user
}
}
然后按如下方式使用它......
<?php
$bar = new User();
$bar->database->doSomethingForUser();
?>
我注意到我在使用某些函数时遇到了问题,例如array_multisort(特别是“PHP致命错误:嵌套级别太深 - 递归依赖性?”),当尝试对对象数组进行排序时,以及当我使用var_dump时,它显示了一些属性作为递归...
任何帮助是明智的iated
只要您知道自己在做什么,并且知道如何解决该问题,它就很安全。很显然,如果你使用的是array_multisort,你并不是围绕着循环引用。 – gcochard
我想这就是我有点困惑......关于如何处理尝试对包含循环引用的对象数组进行排序的任何想法? –
简单。假设您不需要一路下来,只需对顶层数组进行排序即可。你不需要递归排序;只需使用像'usort'这样的比较函数来正确比较两个对象。 – cHao