Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z singletonem
Forum PHP.pl > Forum > PHP > Object-oriented programming
emigo
W innym watku ktory zalozylem, poradzono mi zebym do mojego jadra w php uzyl singletonow. Poczytalem na forum tutaj o singletonach i albo cos zle zrozumialem, albo cos zle robie. Najlatwiej bedzie wyjasnic za pomoca kodu:

  1. <?php
  2. class engine {
  3. public static $instance;
  4. public $zmienna;
  5.  
  6. public function __construct() {
  7. $this->zmienna = 'wartosc 1';
  8. } 
  9.  
  10. public static function getInstance()
  11. {
  12. if (self::$instance === null) {
  13. self::$instance = new engine;
  14. } 
  15.  
  16. return self::$instance;
  17. } 
  18. } 
  19.  
  20. class news {
  21. public function __construct()
  22. {
  23. $silniczek = engine::getInstance();
  24. $silniczek->zmienna = 'wartosc 2';
  25. } 
  26. } 
  27.  
  28. $engine = new engine;
  29. echo $engine->zmienna;
  30. $module = new news;
  31. echo ' - ';
  32. echo $engine->zmienna;
  33. ?>


Po odpaleniu tego w przegladarce dostaje: 'wartosc 1 - wartosc 1', a chcialbym by bylo 'wartosc 1 - wartosc 2'. Czyli aby za pomoca $silniczek->zmienna nadpisac wartosc zmiennej klasy engine. Czy jest to mozliwe wogole w ten sposob? Czy do tego musze wykorzystac cos innego niz singletony?
netzah
  1. <?php
  2.  
  3. ...
  4. $engine = engine::getInstance(); // <-------------------------
  5. echo $engine->zmienna;
  6. $module = new news;
  7. echo ' - ';
  8. echo $engine->zmienna;
  9.  
  10. ?>


miales 2 rozne obiekty ;-)
emigo
Dzieki za pomoc, teraz juz chyba zrozumialem dokladnie dzialanie singletonow - calkiem logiczne to jest, nie wiem jak sam do tego nie doszedlem ;-) Dzieki jeszcze raz.
bela
konstruktor powinien być prywatny ! i zmienna $instance tez ohmy.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.