Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wzorzec projektowy Singleton
Marys91
post
Post #1





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

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


Witam,
czytam książkę i na podstawie tej książki stworzyłem sobie klasę obsługującą bazę. Tylko pojawia się pewien problem, a mianowicie do tej klasy jest załączany taki plik jak DB.php i później z tego pliku są używane metody. Pytanie moje brzmi czy to DB.php trzeba samemu napisać czy już jest gdzieś gotowe? Autorzy książki wykorzystują PostgreSQL, a ja chce wykorzystać MySQL. Znalazłem taki link http://pear.php.net/manual/pl/package.data....db.iserror.php i tu są opisane te metody z których korzystam.

Może zaprezentuje kawałek kodu:
  1. <?php
  2.  
  3. require_once('config.php');
  4. require_once('DB.php');
  5.  
  6. Class Datebase{
  7. private $conn;
  8.  
  9. private function __construct($dsn=null){
  10. global $conn;
  11.  
  12. if($dsn == null){
  13. $dsn = $cfg['db']['dsn'];
  14. }
  15.  
  16. $this->conn = DB::connect($dsn);
  17.  
  18. if(DB::isError($this->conn)){
  19. throw new Exception($this->conn->getMessage(), $this->conn->getCode());
  20. }
  21.  
  22. $this->conn->setFetchMode(DB_FETCHMODE_ASSOC);
  23. }
  24.  
  25. static public function instance(){
  26. static $objDB;
  27.  
  28. if(! isset($objDB)){
  29. $objDB = new Datebase();
  30. }
  31.  
  32. return $objDB;
  33. }
  34.  
  35. function __destruct(){
  36. $this->conn->disconnect();
  37. }
  38.  
  39. //Zwraca obiekt DB_result
  40. function select($sql){
  41. $result = $this->conn->query($sql);
  42.  
  43. if(DB::isError($result)){
  44. throw new Exception($result->getMessage(), $result->getCode());
  45. }
  46.  
  47. return $result;
  48. }
  49.  
  50. //Zwraca dwuwymiarową tablicę asocjacyjną
  51. function getAll($sql){
  52. $result = $this->conn->getAll($sql);
  53.  
  54. if(DB::isError($result)){
  55. throw new Exception($result->getMessage(), $result->getCode());
  56. }
  57.  
  58. return $result;
  59. }
  60.  
  61. ...


i teraz jest np. DB::connect, DB::isError, skąd się bierze $this->conn->query($sql)? Zbytnio tego nie rozumiem. Przykładowo, gdzie jest napisana metoda getMessage()? Proszę o jakieś wyjaśnienie bo widzę, że to jest ciekawe rozwiązanie i odciąża serwer.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
olechafm
post
Post #2





Grupa: Zarejestrowani
Postów: 125
Pomógł: 2
Dołączył: 8.10.2010
Skąd: Poniemieckie miasto przesiedleńców

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


no skoro jest require dla pliku DB.php to zdecydowanie brakuje Ci tego pliku i to w nim zadeklarowane są wspomniane funkcje...

jednak nie podajesz nazwy książki, oraz tego, czy przypadkiem podany przykład nie jest pisany bazując na jakimś frameworku, który mógłby dostarczać klasę DB, takie informację byłyby przydatne...

poza tym temat posta dobrany dosyć niefortunnie...


Edit:
a skoro znalazłeś już informacje o pakiecie PEAR i API dostępu do baz danych to poczytaj o nim, a szczególnie o tym gdzie znajdziesz klasy przezeń dostarczane, nie wiem na jakim środowisku to testujesz, ale zajrzyj do katalogu PHP/PEAR tam chyba nawet jest ten Twój brakujący plik...

Ten post edytował olechafm 13.05.2011, 11:08:16
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 - 23:21