【问题标题】:PHP - Singleton that returns booleanPHP - 返回布尔值的单例
【发布时间】:2011-03-16 19:56:58
【问题描述】:

我创建了一个单例类,但我希望创建实例的静态函数返回一个布尔值而不是类对象。它不像我现在设置的那样工作,这让我觉得我只能返回一个实例。换句话说,该函数不返回真或假;它什么也不返回。

class CacheMachine {
    private static $_cache;

    private function __construct() {}

    public static function CreateNew(&$cacheFile) {
        if(!isset(self::$_cache)) {
            $object = __CLASS__;
            self::$_cache = new $object();
        }
        if(file_exists($cacheFile)) {
            readfile($cacheFile);
            return true;
        } else {
            return false;
        }
    }
}

【问题讨论】:

  • 不工作是什么意思?
  • 该函数正在实例化 _cache 对象(self),但它没有返回 true 或 false。它什么也不返回。
  • 您确定 readFile() 和 file_exists() 按预期工作吗?也许它们会中断,您的代码永远不会到达返回语句。
  • 是的,我已经验证这两个功能都按预期工作。

标签: php static singleton


【解决方案1】:

更改 #1:

 private static $_cache = NULL;

更改 #2:

if(self::$_cache === NULL) {
            $object = __CLASS__;
            self::$_cache = new $object();
        }

【讨论】:

  • 它与 OP 目前的有什么不同?
  • 我认为你误会了。我正在尝试返回 true 或 false,函数的实例化部分工作正常。
猜你喜欢
  • 2012-05-10
  • 1970-01-01
  • 2011-11-20
  • 2013-08-18
  • 2018-01-24
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多