加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中的单例引用和递归

发布时间:2020-12-13 21:43:38 所属栏目:PHP教程 来源:网络整理
导读:我有一个主引导类(示例中的singleton1)实例化一些单例类.在那些单例类中,我需要保留对app主类的引用,以便于快速引用它,但这样做给了我一个: Fatal error: Maximum function nesting level of '100' reached,aborting 这是exmaple代码: ?phpclass Singleton
我有一个主引导类(示例中的singleton1)实例化一些单例类.在那些单例类中,我需要保留对app主类的引用,以便于快速引用它,但这样做给了我一个:

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

这是exmaple代码:

<?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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读