Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Singleton
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Singleton

Страниц (1): [1]
 

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

PHP:
скопировать код в буфер обмена
  1. class myClass{
  2. private static $_instance;
  3. private static $_property;
  4. private function __construct(){
  5. self::$_property = time() ;
  6. }
  7. public static function getInstance()
  8. {
  9. if(self::$_instance === null)
  10. {
  11. self::$_instance = new self();
  12. }
  13. return self::$_instance;
  14. }
  15. public function getProperty(){
  16. return self::$_property;
  17. }
  18. }
  19. myClass::getInstance();
  20. echo myClass::getProperty();
2. OrmaJever - 21 Февраля, 2012 - 17:27:33 - перейти к сообщению
Каждое новое обращение к скритпу, это новый обьект, и новое значение. Для этого нужны сесии.
3. DelphinPRO - 21 Февраля, 2012 - 19:04:06 - перейти к сообщению
вы ошибаетесь в понимании принципов работы php.
4. Okula - 21 Февраля, 2012 - 19:23:19 - перейти к сообщению
El_Coyot, для того чтобы понять как работает этот шаблон попробуй протестировать такой пример:
PHP:
скопировать код в буфер обмена
  1. class myClass {
  2.  
  3.     private static $_instance;
  4.     private static $_property;
  5.  
  6.     private function __construct() {
  7.         self::$_property = time();
  8.     }
  9.  
  10.     public static function getInstance() {
  11.         if(self::$_instance === null) {
  12.             self::$_instance = new self();
  13.         }
  14.         return self::$_instance;
  15.     }
  16.    
  17.     public function getProperty() {
  18.         return self::$_property;
  19.     }
  20.  
  21. }
  22.  
  23. myClass::getInstance();
  24. echo myClass::getProperty();
  25. sleep(5);
  26. myClass::getInstance();
  27. echo '<br>'.myClass::getProperty();

Думаю после этого сразу отпадут все вопросы Улыбка

 

Powered by ExBB FM 1.0 RC1