Guest User

Untitled

a guest
Oct 27th, 2017
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.59 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * contains only class Dao
  5.  *
  6.  * @version 0.2
  7.  * @author Artem Bykov <earthworm@i.ua>
  8.  */
  9.  
  10. /**
  11.  * Data Access Object class, works with database
  12.  *
  13.  * Connects to DB, can execute prepared statements
  14.  */
  15. class Dao
  16. {
  17.     /**
  18.      * @var PDO DBH variable
  19.      */
  20.     private $db;
  21.  
  22.     /**
  23.      * @var string server path
  24.      */
  25.     private $db_host;
  26.  
  27.     /**
  28.      * @var string username
  29.      */
  30.     private $db_user;
  31.  
  32.     /**
  33.      * @var string password
  34.      */
  35.     private $db_pass;
  36.  
  37.     /**
  38.      * @var string data base name
  39.      */
  40.     private $db_name;
  41.  
  42.     /**
  43.      * @var boolean
  44.      */
  45.     private $connected = false;
  46.  
  47.     /**
  48.      * Constructor
  49.      *
  50.      * @param string $db_user Data Base username
  51.      * @param string $db_pass Data Base user's password
  52.      * @param string $db_name Data Base name
  53.      * @param string $db_host Data Base server path
  54.      */
  55.     public function __construct(
  56.     $db_user = 'root', $db_pass = '', $db_name = 'project222', $db_host = 'localhost'
  57.     ) {
  58.         $this->db_host = $db_host;
  59.         $this->db_user = $db_user;
  60.         $this->db_pass = $db_pass;
  61.         $this->db_name = $db_name;
  62.  
  63.         $this->connect();
  64.     }
  65.  
  66.     /**
  67.      * Destructor
  68.      *
  69.      * Calls disconnect() method which unsets DBH variable
  70.      */
  71.     public function __destruct()
  72.     {
  73.         $this->disconnect();
  74.     }
  75.  
  76.     /**
  77.      * Connect method
  78.      *
  79.      * Creates PHP Data Object
  80.      * Default server name, path, username, password
  81.      *
  82.      * @return boolean | string exception message
  83.      */
  84.     private function connect()
  85.     {
  86.         if (!$this->connected) {
  87.  
  88.             /**
  89.              * try to connect to DB server on my localhost
  90.              * 'mysql:host=localhost;dbname=project222', root, ''
  91.              */
  92.             try {
  93.                 $this->db = new PDO(
  94.                         'mysql:host='.$this->db_host.';dbname='.$this->db_name, $this->db_user, $this->db_pass
  95.                 );
  96.  
  97.                 $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  98.                
  99.                 /**
  100.                  * if not error cathed, must be connected already
  101.                  */
  102.                 $this->connected = true;
  103.                 return true;
  104.             } catch (PDOException $e) {
  105.                 return $e->getMessage();
  106.             }
  107.         } else {
  108.             return true;
  109.         }
  110.     }
  111.  
  112.     /**
  113.      * Disconnect function
  114.      *
  115.      * Unsets PDO variable
  116.      *
  117.      * @return void
  118.      */
  119.     private function disconnect()
  120.     {
  121.         if ($this->connected) {
  122.             unset($this->db);
  123.             $this->connected = false;
  124.         }
  125.     }
  126.  
  127.     /**
  128.      * Executes query
  129.      *
  130.      * @deprecated since version 0.2
  131.      *
  132.      * @todo ненужная функция. это всё можно сделать настройкой PDO. то же самое и про другие подобные функции из этого класса. посмотри, как настраивается pdo
  133.      * @param string $sql MySQL query
  134.      * @return boolean
  135.      */
  136.     public function executeQuery($sql)
  137.     {
  138.         $raw_result = $this->db->query($sql);
  139.         if (!$raw_result) {
  140.             die('DB Access error: ' . $this->db->errorInfo());
  141.         }
  142.         return true;
  143.     }
  144.  
  145.     /**
  146.      * Executes query and returns array
  147.      *
  148.      * @deprecated since version 0.2
  149.      *
  150.      * @param string $sql MySQL query
  151.      * @return array string[][]
  152.      */
  153.     public function selectQuery($sql)
  154.     {
  155.         $raw_result = $this->db->query($sql);
  156.         if (!$raw_result) {
  157.             die('DB Access error: ' . $this->db->errorInfo());
  158.         }
  159.         return $raw_result->fetchAll(PDO::FETCH_ASSOC);
  160.     }
  161.  
  162.     /**
  163.      * Prepared select
  164.      *
  165.      * Executes prepared statement with arguments
  166.      * returns associated array
  167.      *
  168.      * @param string $sql Prepared MySQL statment
  169.      * @param array $args arguments to execute with плохое название
  170.      * @return array string[][]
  171.      */
  172.     public function preparedSelect($sql, $args)
  173.     {
  174.         $stmt = $this->db->prepare($sql);
  175.        
  176.         foreach ($args as $key => $value) {
  177.             $stmt->bindValue($key, $value);
  178.         }
  179.         $stmt->execute();
  180.        
  181.         if (!$stmt) {
  182.             die('DB Access error: ' . $this->db->errorInfo());
  183.         }
  184.         return $stmt->fetchAll(PDO::FETCH_ASSOC);
  185.     }
  186.  
  187.     /**
  188.      * Prepared execute
  189.      *
  190.      * Executes prepared statement with arguments
  191.      * returns true if success
  192.      *
  193.      * @param string $sql Prepared MySQL statment
  194.      * @param array $args arguments to execute with
  195.      * @return boolean
  196.      */
  197.     public function preparedExecute($sql, $args)
  198.     {
  199.         $stmt = $this->db->prepare($sql);
  200.        
  201.         foreach ($args as $key => $value) {
  202.             $stmt->bindValue($key, $value);
  203.         }
  204.         $stmt->execute();
  205.        
  206.         if (!$stmt) {
  207.             die('DB Access error: ' . $this->db->errorInfo());
  208.         }
  209.         return true;
  210.     }
  211. }
Add Comment
Please, Sign In to add comment