Шаблон Singleton

El_Coyot

Новичок
Есть вот такой код.
По идее после первого обращения к скрипту он должен в переменную property записать временную метку, а при следующих обращениях - выдавать значение полученное в первый раз.
Где я ошибаюсь?

PHP:
class myClass{
private static $_instance;
private static $_property;
private function __construct(){
self::$_property = time() ;
} 
public static function getInstance()
       {
               if(self::$_instance === null)
               {
                   self::$_instance = new self();
               }
               return self::$_instance; 
       }
public function getProperty(){
return self::$_property;
}
}
myClass::getInstance();
echo myClass::getProperty();
 

Adelf

Administrator
Команда форума
Плохо, что статическое свойство в динамическом конструкторе меняется. лучше уж так делать:

PHP:
public static function getInstance()
       {
               if(self::$_instance === null)
               {
                   self::$_instance = new self();
                   self::$_property = time() ;
               }
               return self::$_instance; 
       }
А из конструктора - убрать. Правда проблему это не решит. Я не знаю почему у тебя не работает такая простая логика.... http://phpfaq.ru/debug ? :)
 

El_Coyot

Новичок
Ок, кажется понял. Он и не должен работать как мне нужно.
Не подскажете как все-таки решить проблему?
 

Adelf

Administrator
Команда форума
В чем проблема то?
Что пишет echo myClass::getProperty(); ?
 

El_Coyot

Новичок
Пишет то что и должно писать.. Я не правильно понял логику работы singleton. Он для моей задумки увы не подходит
 

El_Coyot

Новичок
Увы нет. Я почему-то решил что значение property будет одинаковым для разных обращений к скрипту (не уверен что правильно сформулировал, но надеюсь понятно) и не надо будет его хранить в базе или сессии.
А пример работает вполне корректно.
 

alekciy

Новичок
Увы нет. Я почему-то решил что значение property будет одинаковым для разных обращений к скрипту (не уверен что правильно сформулировал, но надеюсь понятно) и не надо будет его хранить в базе или сессии.
Если были ожидания, что там будет одно и тоже число для разных запросов, то стоит еще раз внимательно ознакомиться с основами PHP. Потому как кто-то по ходу думает, что приложение живет между запросами. А это не так. PHP скрипт запускается каждый раз при каждом новом запросе, поэтому там будет каждый раз другое время. Нужно сохранение состояние, то таки да, сессии либо запись в базу/файл.
 
Сверху