Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa obsługi bazy danych
Forum PHP.pl > Inne > Oceny
Beynar
Prosze o troche słów krtyki dla mojej klasy obsługi bazy danych.

Tutaj dokumentacja: http://ww1.pelp.net/forum/viewtopic.php?f=14&t=5
Tutaj źródło w przejzystej formie: http://ww1.pelp.net/new/beynar/libs/db
  1. <?php
  2. //
  3. // mysql service class
  4. // version 1.12 stable
  5. // refere /docs/db for documentation
  6. // beynar
  7. //
  8.  
  9. class db{
  10.     
  11.     // ini config path
  12.     const DB_CONFIG_PATH = &#092;"./config/config.ini\";
  13.     
  14.     // singleton
  15.     private static $instance;
  16.     private static $link;
  17.     private static $queries=0;
  18.  
  19.     // access properties
  20.     private $host;
  21.     private $login;
  22.     private $database;
  23.     
  24.     // data
  25.     private $resource=false;
  26.     private $data=false;
  27.     private $status=NULL;
  28.     private $rows=0;
  29.  
  30.  
  31.     public static function getInstance(){
  32.         // singleton object creator
  33.     if(!isset(self::$instance))
  34.         self::$instance = new db();
  35.     return self::$instance;
  36.     }
  37.  
  38.  
  39.     private function __construct(){
  40.     // read config
  41.     $cfg=parse_ini_file(self::DB_CONFIG_PATH, true);
  42.  
  43.     // establish connection to rdbms
  44.     if($link=mysql_connect($cfg[&#092;"db\"][\"host\"], $cfg[\"db\"][\"login\"], $cfg[\"db\"][\"password\"]))
  45.         self::$link = $link;
  46.     else $this -> error();
  47.         $this -> host = $cfg[&#092;"db\"][\"host\"];
  48.     $this -> login = $cfg[&#092;"db\"][\"login\"];
  49.  
  50.     // select db        
  51.     if($db=mysql_select_db($cfg[&#092;"db\"][\"database\"]))
  52.         $this -> database = $cfg[&#092;"db\"][\"database\"];
  53.     else $this -> error();
  54.     }
  55.  
  56.         public function query($query){
  57.     if(!$resource=mysql_query($query, self::$link)){
  58.         $this -> error($query);
  59.         return false;
  60.         }
  61.     self::$queries++;
  62.         // gets data from resource as array
  63.     if(is_resource($resource)){
  64.         $this -> resource = $resource;
  65.         $this -> data = null;
  66.         while($res=mysql_fetch_array($this -> resource, MYSQL_ASSOC))
  67.         $this -> data[]=$res;
  68.         mysql_free_result($resource);
  69.         }
  70.     else if(is_bool($resource))
  71.         $this -> status = $resource;
  72.     return true;
  73.     }
  74.  
  75.  
  76.     public function numRows(){
  77.     if(is_array($this -> data)){
  78.         $rows=count($this -> data);
  79.         $this -> rows = $rows;
  80.         return $rows;
  81.         }
  82.     }
  83.  
  84.         public function numQueries(){
  85.     return self::$queries;
  86.     }
  87.  
  88.             public function getData(){
  89.     return $this -> data;
  90.     }
  91.             public function getStatus(){
  92.     return $this -> status;
  93.     }
  94.             public function getResource(){
  95.     return $this -> resource;
  96.     }
  97.             public function getHostname(){
  98.     return $this -> host;
  99.     }
  100.             public function getDbName(){
  101.     return $this -> database;
  102.     }
  103.     
  104.     public function getUsername(){
  105.     return $this -> login;
  106.     }
  107.  
  108.  
  109.     // DEBUGING METHOD
  110.     // ONLY FOR DEVELOPING TIME
  111.     private function error($query=false){
  112.         if($query)
  113.         echo &#092;"\".$query.\"\";
  114.     echo &#092;"\".mysql_errno().\" = \".mysql_error().\"\";
  115.     }
  116.             public function __destruct(){
  117.     mysql_close(self::$link);
  118.     }
  119. }
  120. ?>


metoda error finalnie bedzie spisywala błędy do logow lub po prostu throw exception...
Cysiaczek
Przenoszę na Oceny

Szczerze mówiąc, to nie bardzo jest co oceniać :|
Kod da się napisać w 15 minut, a podobny efekt da użycie PDO
Obsługuje tylko MySQL, więc powinna się nazywać mysql_db

Nie mówię, że jest zupełnie źle, ale, jeszcze troszkę musisz popracować ;]

Pozdrawiam i powodzenia
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.