這是我如何設置我的辛格爾頓辛格爾頓沒有返回現有實例
<?php
class MySingleton
{
private static $instance;
private static $you;
private function __construct()
{
$this->you = "foo";
}
public static function singleton()
{
if (!isset(self::$instance)) {
$className = __CLASS__;
self::$instance = new $className;
}
return self::$instance;
}
public function getYou()
{
return $this->you;
}
public function setYou($val)
{
$this->you = $val;
}
}
?>
在file1.php
,我這樣做:
require_once('session.php');
$session = MySingleton::singleton();
$session->setYou('bar');
echo $session->getYou(); //echoes 'bar'
在file1.php,我有一個超鏈接到file2.php,我有這個代碼:
require_once('session.php');
$session = MySingleton::singleton();
echo ($session->getYou()); //prints 'foo' which gets set in the constructor
它似乎是爲file2創建一個新的實例,這就是爲什麼$you
的默認值爲foo
。我哪裏錯了?爲什麼我沒有得到我在file1.php中使用的實例?
*(tip)* http://stackoverflow.com/questions/4595964/who-needs-singletons/4596323#4596323 – Gordon 2012-01-04 13:14:22
不幸的是,使用會話不是一個選項。該應用程序正在使用長輪詢,這會導致'session_start'花費超過30秒的時間來執行。我希望改用singletons。我想我可以使用Cookie – xbonez 2012-01-04 13:20:27
嘗試使用Cookie,但同樣的問題。由於cookies也使用文件,因此它很有意義。謝謝您的幫助。如果我找不出來,我會創建另一個問題 – xbonez 2012-01-04 13:30:12