Advertisement
Guest User

Untitled

a guest
Jul 10th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.24 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Class DatabaseConfig
  5.  */
  6. class DatabaseConfig
  7. {
  8.     // to powinno być ładowane z jakiegoś yamla czy czegoś i walidowane
  9.     /**
  10.      * @var array
  11.      */
  12.     private $config = [
  13.         'db_server'   => '127.0.0.1',
  14.         'db_name'     => 'schema',
  15.         'db_user'     => 'user1',
  16.         'db_password' => 'password123',
  17.     ];
  18.  
  19.     /**
  20.      * @var string
  21.      */
  22.     public $dbServer;
  23.  
  24.     /**
  25.      * @var string
  26.      */
  27.     public $dbName;
  28.  
  29.     /**
  30.      * @var string
  31.      */
  32.     public $dbUser;
  33.  
  34.     /**
  35.      * @var string
  36.      */
  37.     public $dbPassword;
  38.  
  39.     /**
  40.      * DatabaseConfig constructor.
  41.      * inb4 gettery dla każdego pola
  42.      */
  43.     public function __construct()
  44.     {
  45.         $this->dbName = $this->config['db_name'];
  46.         $this->dbServer = $this->config['db_server'];
  47.         $this->dbUser = $this->config['db_user'];
  48.         $this->dbPassword = $this->config['db_password'];
  49.     }
  50.  
  51. }
  52.  
  53. /**
  54.  * Class DatabaseManager
  55.  */
  56. class DatabaseManager
  57. {
  58.  
  59.     /**
  60.      * @var DatabaseConfig
  61.      */
  62.     protected $dbConfig;
  63.  
  64.     /**
  65.      * @var PDO
  66.      */
  67.     protected $db;
  68.  
  69.     /**
  70.      * DatabaseManager constructor.
  71.      *
  72.      * @param DatabaseConfig $config
  73.      */
  74.     public function __construct(DatabaseConfig $config)
  75.     {
  76.         $this->dbConfig = $config;
  77.         $this->db = $this->preparePdo();
  78.     }
  79.  
  80.     /**
  81.      * @param string $sql
  82.      *
  83.      * @return array
  84.      */
  85.     public function getResults($sql)
  86.     {
  87.         $sql = $this->db->query($sql);
  88.         $result = $sql->fetchAll(PDO::FETCH_ASSOC);
  89.  
  90.         return $result;
  91.     }
  92.  
  93.  
  94.     /**
  95.      * @throws
  96.      * @return PDO
  97.      */
  98.     private function preparePdo()
  99.     {
  100.         try {
  101.             return new PDO(
  102.                 'mysql:host='.$this->dbConfig->dbServer.':dbname='.$this->dbConfig->dbName,
  103.                 $this->dbConfig->dbUser,
  104.                 $this->dbConfig->dbPassword,
  105.                 [
  106.                     PDO::ATTR_EMULATE_PREPARES => false,
  107.                     PDO::ATTR_ERRMODE          => PDO::ERRMODE_EXCEPTION,
  108.                 ]
  109.             );
  110.         } catch (PDOException $e) {
  111.             throw $e; //todo error handling
  112.         }
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement