Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazywanie obiektu PDO
Forum PHP.pl > Forum > PHP
Apo
Witam
Chciałem sie zapytac jak rozwiązaliście przykazywanie obiektu PDO między róznymi klasami :?:
Bo nie wiem jak rozwiązać ten problem :/ Myślałem że zrobie takie coś:
W index.php stworze obiekt $pdo i potem jeśli będzie potrzebny np w klasie 'news' to przekaże go przez konstruktor:

  1. <?php
  2. class news {
  3. private $pdo;
  4.  
  5.  public function __construct($pdo)
  6.  {
  7.  $this->pdo = $pdo
  8.  }
  9. // potem w kodzie $pdo->query ... itp
  10. }
  11. ?>


ALe nie wiem czy to jest najlepszy pomysł ...
Fipaj
Singleton

(czy PDO nie ma wbudowanego Singletonu?)
bela
Chyba nie ma wbudowanego, ale można dopisać winksmiley.jpg Wystarczy wydziedziczyć (chyba już nie ma problemu z final).
Apo
Ok dorobiłem ten Singleton jak pisaliście smile.gif

  1. <?php
  2.  
  3. class myPDO extends PDO {
  4.  
  5. private static $instance = null;
  6.  
  7. public static function getPDO()
  8. {
  9. if(is_null(self::$instance))
  10. return self::$instance = new PDO('mysql::host=localhost;port=3306;dbname=mysite', 'root', '');
  11. else
  12. return self::$instance;
  13.  
  14. }
  15. }
  16.  
  17. try
  18. {
  19. $pdo = myPDO::getPDO();
  20. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // aby tego nie powtarzac
  21. } catch(PDOException $e)
  22. {
  23. echo $e->getMessage();
  24. }
  25. ?>


Ale teraz mam pytanie jak moge ustawiać automatycznie przy tworzeniu obiektu metode setAttribute aby jej nie powatarzać w danym obiekcie ?

Pozdro
dr_bonzo
No chyba zartujesz?

self::$instance->setAttribute()
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.