gpt4 book ai didi

php - 使用 PHP 对象设置递归属性是否安全?

转载 作者:行者123 更新时间:2023-12-02 05:44:57 25 4
gpt4 key购买 nike

我找遍了所有地方,似乎找不到答案。我想知道的是在 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();
?>

我刚刚注意到我在尝试对对象数组进行排序时以及在使用var_dump,它显示一些属性是递归的...

感谢任何帮助

最佳答案

在 PHP 5.3 之前,这可能会导致问题。 PHP 过去常常进行引用计数,并使用循环引用来防止对象被 GC。

现在 5.3 实现了一个不错的垃圾收集器,这不是什么大问题。但是将这些对象传递给任何遍历对象图的函数仍然会导致无限递归,如果该函数不知道这种可能性并准备好处理它的话。 (我认为 var_dump 可以很好地处理递归,但递归地对此类对象进行排序可能会导致各种麻烦。)

关于php - 使用 PHP 对象设置递归属性是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com