【发布时间】:2011-02-12 08:38:59
【问题描述】:
我注意到 PHP 中的关键字 static 根本不是 static。
假设Elmo 是我的单身人士:
class Elmo
{
private static $instance;
private function __construct()
{
echo 'Elmo says constructor\n';
}
public static function getInstance()
{
if (!isset(self::$instance))
self::$instance = new Elmo();
return self::$instance;
}
public function boo()
{
echo 'Elmo says boo!\n';
}
}
以下文件只是一个普通的.php 脚本。
<?php
Elmo::getInstance()->boo();
Elmo::getInstance()->boo();
// Output:
// Elmo says constructor
// Elmo says boo!
// Elmo says boo!
?>
每个新页面Elmo 都会重新构建。为什么后续页面没有如下输出?
<?php
// Output:
// Elmo says boo!
// Elmo says boo!
?>
希望有人能指教一下,谢谢!
【问题讨论】:
-
这就是你不想在 PHP 中使用单例的原因之一。当没有共享的应用程序内存时,这是没有意义的。见stackoverflow.com/questions/4595964/who-needs-singletons/…
-
@Gordon - 这是一些非常有用的信息,谢谢。