Вот так я настроил свой синглтон
<?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?