Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa "Connection", instancja PDO
Forum PHP.pl > Forum > PHP
Raven1122
Witam,

Mam taki kod:

  1. <?php
  2. require_once('global.php');
  3. class Connection{
  4.  
  5.  
  6. protected static $_instance=null;
  7.  
  8. public static function getInstance(){
  9. if(self::$_instance === null){
  10. self::$_instance = new self();
  11. }
  12. return self::$_instance;
  13. }
  14.  
  15. public function connect(){
  16. {tu}new PDO('mysql:host='.$host.';dbname='.$db.'', $username, $password);
  17. {tu}setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  18. }
  19.  
  20. }
  21.  
  22. ?>


  1. <?php
  2. require_once('pdo.class.php');
  3. $db = Connection::getInstance();
  4. $db->connect();
  5. ?>


Zastanawiam się nad tym, jak zrobić, aby wykonywać zapytania do bazy danych wykorzystwac: $db->prepare();, a nie $db->connection->prepare();

Czy ktoś może, mnie naprowadzić co mam wstawić w miejsca oznaczone {tu}, w pierwszym kodzie??
adbacz
Możesz wykorzystać do tego magiczną metodę __call(). Ogólnie, jest ona wywoływana automatycznie (jeśli istnieje - jest zdefiniowana w klasie), gdy wywoływanej metody na obiekcie nie mam w klasie obiektu: http://www.php.net/manual/en/language.oop5...php#object.call

W tedy, obojętnie do jakiej właściwości klasy zapiszesz instancję PDO, zawsze będziesz mógł sie odwołać do niej w tej metodzie magicznej, i w zależności od argumentu $name, wykonał odpowiednie czynności.
Raven1122
Mam teraz tak o:

  1. <?php
  2. class Connection{
  3.  
  4. protected static $_instance=null;
  5.  
  6. public static function getInstance(){
  7. if(self::$_instance === null){
  8. self::$_instance = new self();
  9. }
  10. return self::$_instance;
  11. }
  12.  
  13. public function __call($name, $argument){
  14. new PDO('mysql:host=localhost;dbname=***', '***', '***');
  15. setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  16. }
  17.  
  18. }
  19.  
  20. ?>


Ale nadal wyskakujem i blad:

( ! ) Fatal error: Call to undefined function setAttribute() in D:\wamp\www\Radio Panel\pdo.class.php on line 15

bo nwm co dac przes 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.