Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jedna instancja klasy zamiast wielu - singleton
Joachim Peters
post
Post #1





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Witam,

Zastanawiam się czy da się jakoś inaczej stosować singleton niż tak:
  1. <?php
  2. $db = DB::getInstance();
  3. $user = User::getInstance();
  4. $session = Session::getInstance();
  5. ?>

Czy jest jakiś krótszy sposób? Jak robicie to u siebie, referencję? Bo to jest trochę męczące, żeby dodawać ten kod w każdej metodzie.

Pozdrawiam

Ten post edytował Joachim Peters 28.07.2007, 15:03:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Joachim Peters
post
Post #2





Grupa: Zarejestrowani
Postów: 196
Pomógł: 2
Dołączył: 1.03.2006

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


Ja stworzyłem coś takiego, może już jest taki wzorzec, ale to rozwiązanie mi się podoba:
  1. <?php
  2.  
  3. class Kernel {
  4. public $foo;
  5.  
  6. static $instance;
  7.  
  8. public function __construct() {
  9. $this->foo = new Foo;
  10. }
  11.  
  12. public static function getInstance() {
  13. if(!self::$instance) {
  14. self::$instance = new Kernel;
  15. }
  16. return self::$instance;
  17. }
  18. }
  19.  
  20. class Foo {
  21. public function a($string) {
  22. echo $string;
  23. }
  24. }
  25.  
  26. class Foo2 {
  27. public function b() {
  28. $kernel = Kernel::getInstance();
  29. $kernel->foo->a('test');
  30. }
  31. }
  32.  
  33. $foo2 = new Foo2;
  34. $foo2->b();
  35.  
  36. ?>


Wystarczy zadeklarować instancję w konstruktorze jajka i działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Joachim Peters 31.07.2007, 07:33:31
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: 13.10.2025 - 16:37