Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] instancja dla kilku klas?
-asdad-
post 23.12.2011, 12:10:27
Post #1





Goście







Mam taki kod


  1. private static $instance;
  2.  
  3. public static function getInstance()
  4. {
  5. if(!self::$instance instanceof self)
  6. {
  7. self::$instance = new self;
  8. }
  9.  
  10. return self::$instance;
  11. }


I umieszczam go w kilku klasach, nie podoba mi się to ponieważ jest on powielany, a nie będę przecież wczytywał go w każdej klasie przez include, czy jest jakiś inny sposób, aby każda klasa korzystała z tego kodu, a on sam żeby się w nich nie powtarzał?
Go to the top of the page
+Quote Post
Fifi209
post 23.12.2011, 14:00:28
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


To ma być singleton, tak?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
-Gość-
post 23.12.2011, 14:03:29
Post #3





Goście







Tak. Chyba że znasz jakiś inny spsoób, aby nie powielać tego kodu w każdej klasie, ale żeby możnabyło odwołać się przez NAzwaKlasy::getInstance
Go to the top of the page
+Quote Post
Fifi209
post 23.12.2011, 14:04:38
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Napisz lepiej jakie to klasy, do czego mają służyć i dlaczego singleton wink.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
-Gość-
post 23.12.2011, 14:09:07
Post #5





Goście







Są to klasy Uri, Router czy Config ... nie ma potrzeby aby były wykonywane przez new Klasa, więc potrzeba tylko 1 instanicji. Każda z tych klas ma w sobie powyższy kod i pytanie czy on musi tam być czy nie da się tego jakoś 'dziedziczyć'
Go to the top of the page
+Quote Post
-Gość-
post 24.12.2011, 11:35:29
Post #6





Goście







NIkt nie wie?
Go to the top of the page
+Quote Post
Adi32
post 24.12.2011, 12:10:00
Post #7





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Singletona używa się gdy potrzebujesz wyłącznie jednej instancji całego (a przynajmniej więcej niż jednej metody) obiektu danej klasy na cały kod. Jeżeli chcesz mieć dostęp do metody za pomocą obiekt::metoda() wystarczy użyć metody statycznej.

W odpowiedzi na Twoje pytanie: nie nie musisz wklejać tego kodu do każdej klasy, ale z założenia tak właśnie robi się prawidłowo (anty)wzorzec singleton.

Ten post edytował Adi32 24.12.2011, 12:19:05


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 19:09