PHP 4 中的单例模式


singleton pattern in PHP 4

是否可以在 PHP 4 中创建单例类?

现在我有类似 http://pastebin.com/4AgZhgAA 的东西,它甚至没有在 PHP 4 中解析

使用这样的单例所需的最低 PHP 版本是多少?

PHP4 和 OOP === 不带发动机的汽车(:

这是可能的,但不切实际。

查看此示例代码:

class SomeClass
{
    var $var1;
    function SomeClass()
    {
        // whatever you want here
    }
    /* singleton */
    function &getInstance()
    {
        static $obj;
        if(!$obj) {
            $obj = new SomeClass; 
        }
        return $obj;
    }
}

亚历克斯,这篇文章应该有帮助 - http://abing.gotdns.com/posts/2006/php4-tricks-the-singleton-pattern-part-i/.关键是使用基类,并在子类构造函数中调用父类的单一实例化方法。

你也可以像这样使用包装器函数;

 function getDB() {
   static $db;
   if($db===NULL) $db = new db();
   return $db;
 }

当你用一种不是严格OOP的语言编程时,很容易使用原力的阴暗面:

function getInstance() {
  global $singleObj;
  if (!is_object($singleObj)) $singleObj = new Foo();
  return $singleObj;
}

为什么不呢?看起来比严格的单身汉更丑?我不这么认为。

(另外,不要忘记 PHP4 不支持继承 - 我已经花了一些时间