gpt4 book ai didi

php - PHP 中的单例引用和递归

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

我有一个主 Bootstrap 类(下面示例中的 singleton1),它实例化了一些单例类。在那些单例类中,我需要保留对应用程序主类的引用以便于快速引用它,但这样做给了我一个:

Fatal error: Maximum function nesting level of '100' reached, aborting

这是示例代码:

<?php

class Singleton1 {

private static $instance;


private function __construct() {

Singleton2::instance();

}

public static function instance () {

if( !self::$instance ) {
$class = __CLASS__;
self::$instance = new $class;
}

return self::$instance;
}

public function test () {
echo 'Good.';
}

private function __clone() { }

private function __wakeup() { }

}

class Singleton2 {

private static $instance;

private $singleton1;

private function __construct() {
$this->singleton1 = Singleton1::instance();
}

public static function instance () {

if( !self::$instance ) {
$class = __CLASS__;
self::$instance = new $class;
}

return self::$instance;
}

public function test () {
$this->singleton1->test();
}

private function __clone() { }

private function __wakeup() { }

}

Singleton1::instance();

Singleton2::instance()->test();

我找不到对这个问题的任何合乎逻辑的解释......

谢谢。

最佳答案

您的代码有以下循环:

Singleton2::__construct()
Singleton1::instance()
Singleton1::__construct()
Singleton2::instance()
Singleton2::__construct()

关于php - PHP 中的单例引用和递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7644726/

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