Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton
keedy
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Gliwice

Ostrzeżenie: (10%)
X----


Własnie. O co chodzi w tym calym singletonie? keidy i po co bo uzywac?

prosilbym o jakies linki, jedyne co narazie wiem to to, ze ma się cos on do metod statycznych(static).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
awides
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 4.11.2004

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. class Singleton
  4. {
  5. private static $zmienna = false; //def. i inicjalizacja...
  6. public $wlasnosc; //def.
  7.  
  8. private function __construct(){}
  9. public static function wezZmienna()
  10. {
  11. if (self::$zmienna === false) { 
  12. //$zmienna nie moze miec wartosci typu int (0)... 
  13. self::$zmienna = new Singleton;
  14. }
  15. return self::$zmienna;
  16. }
  17. }
  18.  
  19. $a = Singleton::wezZmienna();
  20. $b = Singleton::wezZmienna();
  21. $a->wlasnosc = &#092;"Hello World!\";
  22. echo $b->wlasnosc;
  23. ?>


co my tu mamy ?
#1 nie można utworzyć obiektu poza klasą (poprzez new Singleton) [prywatny konstruktor]
#2 obiekt a i b korzystają z tej samej zmiennej (a w zasadzie z tego samego egzemplarza), dlaczego ?
-przypadek pierwszy (utworzenie indywiduum a)
$zmienna statyczna ma wartość false -> instrukcja sterująca korzystając z powyższej zmiennej (false) tworzy obiekt statyczny wewnątrz funkcji -> $zmienna (obiekt) jest zwracana
-przypadek drugi (utworzenie obiektu (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)
$zmienna statyczna ma wartość false -> instrukcja sterująca umieszczona wewnątrz funkcji nie korzysta ze zmiennej utworzonej na początku klasy (o wartości false) tylko z wcześniej utworzonego obiektu (kopia zmiennej lokalnej) w tej funkcji -> $zmienna jest zwracana (defacto została stworzona wcześniej)

#3 $a->wlasnosc = "Hello World!"; -> modyfikuje globalny (pojedyńczy) obiekt wygenerowany przez klasę

#4 funkcja wezZmienna() korzysta z wzorca Factory


powyższy post jest efektem głębokich przemyśleń autora nad wzorcem typu Singleton i jest prawdopodobnie (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) opisem działania tegoż wzorca, the end...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 20:42