是否可以在 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 不支持继承 - 我已经花了一些时间