【问题标题】:Singleton pattern not working in PHP 5.2单例模式在 PHP 5.2 中不起作用
【发布时间】:2013-09-20 02:24:04
【问题描述】:

我有这个简单的单例类:

public static function getInstance() {                
    if (!self::$_controller) {
        self::$_controller = new self();
    }

    return self::$_controller;
}

使用 PHP 5.3,此代码似乎工作正常,但在 PHP 5.2 上,似乎没有返回实例。我输入了一个简单的调试消息,如下所示:

public static function getInstance() {                
    if (!self::$_controller) {
        self::$_controller = new self();
        echo "I seem to be working";
    }

    return self::$_controller;
}

但“我似乎在工作”从来没有回声。这是怎么回事,我该如何解决?

【问题讨论】:

  • var_dump(self::$_controller)if 之前?
  • 你是什么意思 self::$_controller = new self();你的班级名称是“self”吗?
  • @dbh: 请把类文件的整个代码贴上来好吗?
  • @minitech - 来自 var_dump(self::$_controller) 的结果按预期返回 NULL。

标签: php singleton php-5.2


【解决方案1】:

以下内容适用于 PHP 5.3 和 5.2。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);

class SingleTon {
        private static $_controller = null;

        private function __construct() {
                // do something here or leave it blank.
        }

        public static function getInstance() {
                if (!self::$_controller) {
                        self::$_controller = new self();
                        echo "I seem to be working";
                }

                return self::$_controller;
        }
}

$obj = SingleTon::getInstance();
echo "\n";

?>

它显示“我似乎在工作”。如果您需要任何进一步的帮助,请告诉我。

【讨论】:

  • 我的问题完全不同,但这确实有效。谢谢。
猜你喜欢
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多