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%)
-----


Rozumiem, że chodzi o coś takiego?
  1. <?php
  2.  
  3. class Foo {
  4. private $db;
  5.  
  6. public function __construct($db) {
  7. $this->db = $db;
  8. }
  9.  
  10. public function a() {
  11. $this->db->query('zapytanie');
  12. }
  13. }
  14.  
  15. $db = new DB();
  16. $foo = new Foo($db);
  17.  
  18. ?>


Ps Dziękuje @Ludvik za zainteresowanie!
Go to the top of the page
+Quote Post
Ludvik
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Cytat(Joachim Peters @ 1.08.2007, 22:19:30 ) *
Rozumiem, że chodzi o coś takiego?
  1. <?php
  2.  
  3. class Foo {
  4. private $db;
  5.  
  6. public function __construct($db) {
  7. $this->db = $db;
  8. }
  9.  
  10. public function a() {
  11. $this->db->query('zapytanie');
  12. }
  13. }
  14.  
  15. $db = new DB();
  16. $foo = new Foo($db);
  17.  
  18. ?>


Ps Dziękuje @Ludvik za zainteresowanie!

Nie ma problemu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dokładnie o to chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Do tego możesz wymusić kontrolę typów, dzięki czemu zachowasz spójność obiektu. Zauważ, że przy testach jednostkowych klasy Foo likwidujesz skutki działania obiektu klasy DB. Po podstawieniu mocka test zostanie zaliczony, nawet gdy klasa DB nie przechodzi swoich testów. Singleton wymuszałby użycie konkretnej klasy, która niekoniecznie działa prawidłowo (o ile została już zaimplementowana).
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 - 23:12