答案 0 :(得分:2)
Alex,这篇文章应该会有所帮助 - http://abing.gotdns.com/posts/2006/php4-tricks-the-singleton-pattern-part-i/。关键是使用基类,并在子类构造函数中调用父的单例实例化方法。
答案 1 :(得分:2)
PHP4和OOP ===没有引擎的车(:
这是可能的,但不切实际。
查看此示例代码:
class SomeClass
{
var $var1;
function SomeClass()
{
// whatever you want here
}
/* singleton */
function &getInstance()
{
static $obj;
if(!$obj) {
$obj = new SomeClass;
}
return $obj;
}
}
答案 2 :(得分:2)
你也可以使用像这样的包装函数;
function getDB() {
static $db;
if($db===NULL) $db = new db();
return $db;
}
答案 3 :(得分:1)
当你用一种不严格OOP的语言编程时,很容易使用力量的黑暗面:
function getInstance() {
global $singleObj;
if (!is_object($singleObj)) $singleObj = new Foo();
return $singleObj;
}
为什么不呢?看起来比严格的单身人士更丑陋?我不这么认为。
(另外,不要忘记PHP4不支持继承 - 我花了几个小时的时间。)