Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wzorzec Singletona w MySQL z PEAR, Problem połączenia 3 rzeczy
Marys91
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 29.12.2010

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


Witam,
chciałbym wykorzystać wzorzec Singletona do połączenia się z bazą danych (MySQL) i do tego dołożyłem sobie PEAR' a, ale coś mi nie idzie. To co mam to są takie pliki:

classa.Databases.php
  1. <?php
  2. require_once('pear/MDB2.php');
  3. require_once('config.php');
  4.  
  5.  
  6. class Datebase{
  7. private $conn;
  8.  
  9. private function __construct($zmienna=null){
  10. global $mysql_dsn;
  11.  
  12. if($zmienna==null){
  13. $zmienna = $mysql_dsn;
  14. }
  15.  
  16. $this->conn=MDB2::connect($zmienna);
  17. }
  18.  
  19. static public function instance(){
  20. static $objMDB2;
  21.  
  22. if (!isset($objMDB2)){
  23. $objMDB2 = new Datebase();
  24. }
  25.  
  26. return $objMDB2;
  27. }
  28.  
  29. function select($sql){
  30. $result = $this->conn->query($sql);
  31.  
  32. return $result;
  33. }
  34.  
  35. function fetchAll($sql){
  36. $result = $this->conn->fetchAll($sql);
  37.  
  38. return $result;
  39. }
  40.  
  41. }
  42. ?>


Wiem, że brakuje obsługi błędów.

test.php
  1. <?php
  2. require_once('class.Database.php');
  3.  
  4. $ble = Datebase::instance();
  5. $elb = $ble->fetchAll('SELECT * FROM moajtabela');
  6.  
  7. echo $elb;
  8. ?>


I teraz tak. Po pierwsze czy dobrze myślę o wzorze Singletona (dobrze jest napisana klasa)? Po drugie czemu mi wywala błąd(Fatal error: Call to undefined function: MDB2_Driver_mysqli::numCol(). in pear/MDB2.php on line 1950)? To wygląda na błąd PEAR, ale jak robię normalnie bez mojej klasy to jest dobrze. Po trzecie, widziałem gdzieś jak koleś właśnie tworzył takie metody jak u mnie (fetchAll), ale czy przed tym nie powinno występować query()?

Nie wiem co tu jeszcze może być źle
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: 3.10.2025 - 11:40