Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO
Forum PHP.pl > Forum > PHP > Object-oriented programming
o13k
Obiekt do obslugi bazy powinien byc singletonem. Czy klasa PDO jest oparta o ten wzorzec?
NuLL
Cytat
Obiekt do obslugi bazy powinien byc singletonem.

A kto ci to powiedział questionmark.gif

PDO nie jest singletonem.

php -> PHP5
o13k
Tzn. powinien (dobrze by bylo), nie musi.
Przegladam kod wygenerowany przez phpobjectgenerator, ktory tworzy klase w ktorej kazda metoda tworzy nowy obiekt PDO. Przeciez jaki to ma sens?
Jeden obiekt moze zawierac kilka polaczen do bazy. Tak ma to wygladac? Czy to narzedzie jest kiepskie?
Ociu
Wyglądać to może tak:
  1. <?php
  2. $db = singletonPDO::instance('mysql:host=localhost;dbname=baza_kurde', 'root', '');
  3.  
  4. $jakas_klasa = new jakas_klasa($db);
  5. $jakas_klasa2 = new jakas_klasa2($db);
  6.  
  7. class singletonPDO extends PDO {
  8. private static $instance = null;
  9. public function getInstance($arg) {
  10. if(self::$instance == null) {
  11. self::$instance = new PDO($arg); # mozna jeszcze chyba parent uzyc, ale wolalem uzyc.
  12. }
  13.  
  14. return self::$instance;
  15. }
  16.  
  17. public function query($sql, $fetch_mode) {/* kod funckji */}
  18. }
  19. ?>


pozdrawiam
o13k
A no to jest dobre rozwiazanie. O tym nie pomyslalem, zeby wlasna klase napisac dziedziczaca po PDO
  1. <?php
  2.  
  3. self::$instance = new PDO($arg); # mozna jeszcze chyba parent uzyc, ale wolalem uzyc.
  4. }
  5. ?>


tutaj mam pytanie. Czy singleton nie ma zwracac instancji wlasnej klasy? I jak tak to w takim razie mozna zrobic to tak?
  1. <?php
  2.  
  3. self::$instance = parent::__construct($arg);
  4.  
  5. ?>
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.