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
<?php require_once('pear/MDB2.php'); require_once('config.php'); class Datebase{ private $conn; private function __construct($zmienna=null){ if($zmienna==null){ $zmienna = $mysql_dsn; } $this->conn=MDB2::connect($zmienna); } $objMDB2 = new Datebase(); } return $objMDB2; } function select($sql){ $result = $this->conn->query($sql); return $result; } function fetchAll($sql){ $result = $this->conn->fetchAll($sql); return $result; } } ?>
Wiem, że brakuje obsługi błędów.
test.php
<?php require_once('class.Database.php'); $ble = Datebase::instance(); $elb = $ble->fetchAll('SELECT * FROM moajtabela'); ?>
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