public $db; private function __construct(){ $Parm['DBHost'] = 'localhost'; $Parm['DBLogin'] = 'szpital'; $Parm['DBPass'] = 'asdasd'; $Parm['DBName'] = 'prorapid'; $Parm['DBType'] = 'mysql'; try { $this->db = new PDO($Parm['DBType'].':dbname='.$Parm['DBName'].';host='.$Parm['DBHost'], $Parm['DBLogin'], $Parm['DBPass']); $this->db-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } //Wyświetlanie błędów wrazie niepowodzenia uruchamiania rozszerzenia catch(PDOException $e) { } } if(self::$instance == null){ $c= __CLASS__; self::$instance = new $c(); } return self::$instance; } } class Pliki { //dołączenie referencji z class_serwisy.php class_mysql.php private $serwer = null; private $db = null; function __construct($ID){ //doczepienie klasy class_serwisy.php //$this->serwer=Serwisy::getInstance(); //doczepienie klasy class_mysql.php } function Fileserve($data){ $result=$this->db->prepare(" SELECT sname, pass FROM demo_servers WHERE selected = 1 ORDER BY traffic_left DESC LIMIT 1 "); $result->execute(); $account=$result->fetch(PDO::FETCH_ASSOC); } } $id=1; $pliki = new Pliki($id); $data=1; $x=$pliki->Fileserve($data);
I wywala blad call to undefined method Mysql::prepare() czyli obiekt PDO nie jest stworzony a raczej zreferowany z Klasy Mysql. Pytanie czemu sie tak dzieje, troche przeczytałem o singleton i ten wzorzecz projektowy jest ciekawy, tworzy obiekt raz a nastepnie jesli obiekt jest stworzony to tworzy referencje do niego i dzieki czemu jest mniejszy poziom alokowanej pamieci. JEDNAK ;p nie o tym pisać ale nie potrafie sobie poradzić z tym błędem. Więc prosiłbym o konkretne pokazanie patrz na ta linijke tu masz błąd
