Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO PDO
Forum PHP.pl > Forum > PHP > Object-oriented programming
rahul
Witam
Kozystajac dotychczas z singletona ktory jest ponoc niefajny i chcac sie przerzucic na DI napotkalem sie z problemem jaki robi mi klasa z moim PDO.
Otoz wczenisej mialem taka klase :

  1.  
  2. <?php
  3. class Database extends PDO {
  4.  
  5. protected static $instance;
  6.  
  7.  
  8. public static function getInstance() {
  9. if (!isset(self::$instance)) {
  10.  
  11. $database= array(
  12. 'db_host' => 'localhost',
  13. 'db_user' => 'root',
  14. 'db_pass' => 'admin',
  15. 'db_name' => 'moje');
  16.  
  17. self::$instance = new Database('mysql:host='.$database['db_host'].';dbname='.$database['db_name'], $database['db_user'],$database['db_pass']);
  18. self::$instance->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
  19. }
  20. return self::$instance;
  21. }
  22. }
  23. ?>

i wzystko dzialalo cacy, teraz chce ja zmienic wywalic metody statyczne itp i robie tak :
  1. class DB
  2.  
  3. {
  4. private $dsn;
  5. private $dbname;
  6. private $passwd;
  7. private $options;
  8.  
  9. public function __construct($dsn, $dbname, $passwd, $options)
  10.  
  11. {
  12. $this->dsn = $dsn;
  13. $this->dbname = $dbname;
  14. $this->passwd = $passwd;
  15. $this->options = $options;
  16.  
  17. try
  18. {
  19. $db = new PDO('mysql: host='.$this->dsn.'; dbname='.$this->dbname.'', $this->passwd,$this->options);
  20. return $db;
  21. }
  22.  
  23. catch(PDOException $e)
  24.  
  25. {
  26.  
  27. throw new Exception($e->getMessage());
  28.  
  29. }
  30.  
  31. }
  32.  
  33.  
  34. }


i dupa , wywala blad Fatal error: Call to undefined method DB::query()
nie chce pisac funckji do query, execute czy prepare nie kumam dlaczego teraz sa juz nierozpoznawalne :/

probowalem jeszcze tak :
  1.  
  2. class DB extends PDO
  3. {
  4.  
  5. ...
  6. }
  7.  
  8.  

ale wtedy mi cos gada ze "Warning: PDO::query() [pdo.query]: SQLSTATE[00000]: No error: PDO constructor was not called"
a przeciez jest czy o co be :/ natomiast jak nie napisze funkcji construct , tylko zrobie inna connect to mowi ze nie dostal swoich argumentow, oczekuje 1 a ma 0.
Bez kitu nie kumam, jak to zrobic ? I czy wytlumaczy to ktos jakos tak powoli i klarownie ?
wookieb
  1. class DB extends PDO {
  2. public function __construct() {
  3. // oczywiście zadbaj o parametry
  4. parent::__construct();
  5. }
  6. }
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.