gpt4 book ai didi

php - 数组/对象递归

转载 作者:可可西里 更新时间:2023-11-01 00:50:48 26 4
gpt4 key购买 nike

我最近一直在研究自定义框架,因此在发布我的问题之前,我将解释我组织框架的方式。

有一个主类,所有其他类都是从这个主类扩展而来的。所有其他类都通过一个具有类名的变量在它们之间互连。更简单地说,我有 MAIN 类。我还有类 THEMEURIINIT

框架初始化后,如果我得到 MAIN 实例并将其分配给一个变量,比如 $main,我就可以像这样使用其他类:

$main->theme;
$main->uri;
$main->init;

如果我想,我什至可以使用 $main->theme->uri->theme->init :D,但没办法 $main->theme->theme.

此外,从类内部(MAIN 除外),我可以访问其他类,如 $this->init$this->theme 等指向这些类的属性是引用。

现在我担心的是,当我 print_r $main 变量时,我得到了很多 RECURSION 元素。该框架加载速度很快,内存消耗为 28MB,但我仍然得到了递归。这是否意味着我组织框架的方式是错误的,或者只是 print_r 函数看到了指向相同类的指针,并避免了无限递归?

好的,这是 TF_TFUSE 类的 print_r(我正在谈论的主要类)。这里只实现了另外两个类(输出太少)。

TF_TFUSE Object
(
[framework_version] => 2.1
[load] => TF_LOAD Object
(
[_the_class_name] => LOAD
[framework_version] => 2.1
[buffer] => TF_BUFFER Object
(
[_filters:protected] => Array
(
)

[_buffer:protected] =>
[_the_class_name] => BUFFER
[_is_end:protected] =>
[framework_version] => 2.1
[load] => TF_LOAD Object
*RECURSION*
)

)

[buffer] => TF_BUFFER Object
(
[_filters:protected] => Array
(
)

[_buffer:protected] =>
[_the_class_name] => BUFFER
[_is_end:protected] =>
[framework_version] => 2.1
[load] => TF_LOAD Object
(
[_the_class_name] => LOAD
[framework_version] => 2.1
[buffer] => TF_BUFFER Object
*RECURSION*
)

)

)

最佳答案

问题是您将对象内部的所有内容链接在一起。通常通过创建一个容器类来解决这个问题,该容器类包含其他对象并在它们之间创建交互。

能够做到 $main->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->uri->theme->init 应该给你一个错误的指示。 . .

一个可能的解决方案概括如下:

class Manager {
$theme;
$uri;
$init;
}

并且 THEME、URI 和 INIT 之间不再有直接关系。

关于php - 数组/对象递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850652/

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