За последние 24 часа нас посетили 22808 программистов и 1261 робот. Сейчас ищет 761 программист ...

как подтянуть конфиг

Тема в разделе "Сделайте за меня", создана пользователем Admiral_24, 22 ноя 2018.

  1. Admiral_24

    Admiral_24 Новичок

    С нами с:
    18 ноя 2018
    Сообщения:
    12
    Симпатии:
    0
    PHP:
    1. class DB {    
    2. public static $dsn = 'mysql:dbname=table;host=localhost';    
    3. public static $user = 'user';    
    4. public static $pass = 'password';    
    5.  /**     * Объект PDO.     */    
    6. public static $dbh = null;     /**     * Statement Handle.     */  
    7.   public static $sth = null;     /**     * Выполняемый SQL запрос.     */    
    8. public static $query = '';     /**    
    9. * Подключение к БД     */    
    10.  public static function getDbh() {            if (!self::$dbh) {            
    11. try {                
    12.  self::$dbh = new PDO(                    
    13. self::$dsn,                    
    14. self::$user,                    
    15. self::$pass,                    
    16. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")                 );                
    17. self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);          
    18.   } catch (PDOException $e) {                
    19. exit('Error connecting to database: ' . $e->getMessage());            
    20.  }        
    21. }         return self::$dbh;    
    22.  }
    как брать данные подключения к бд с отдельного файла config.ini
    Код (Text):
    1. [database]
    2. driver = mysql
    3. host = localhost
    4. dbname= thesite
    5. user = thesite
    6. pass = thesite

     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    Передать в конструкторе
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  4. Admiral_24

    Admiral_24 Новичок

    С нами с:
    18 ноя 2018
    Сообщения:
    12
    Симпатии:
    0
    Как? Я просто только начал с пдо работать
     
  5. Admiral_24

    Admiral_24 Новичок

    С нами с:
    18 ноя 2018
    Сообщения:
    12
    Симпатии:
    0
    PHP:
    1. class DB
    2. {
    3.     public function __construct($config) {
    4. require_once "config.php";
    5.         $config->db['db_host'];
    6.         $config->db['db_name'];
    7.         $config->db['db_user'];
    8.         $config->db['db_pass'];
    9.     }
    10. }
    11.    
    12.     public static $dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host'];
    13.     public static $user = $config['db_user'];
    14.     public static $pass = $config['db_pass'];
    15.  
    16.     /**
    17.      * Объект PDO.
    18.      */
    19.     public static $dbh = null;
    20.  
    21.     /**
    22.      * Statement Handle.
    23.      */
    24.     public static $sth = null;
    25.  
    26.     /**
    27.      * Выполняемый SQL запрос.
    28.      */
    29.     public static $query = '';
    30.  
    31.     /**
    32.      * Подключение к БД
    33.      */
    34.     public static function getDbh()
    35.     {  
    36.         if (!self::$dbh) {
    37.             try {
    38.                 self::$dbh = new PDO(
    39.                     self::$dsn,
    40.                     self::$user,
    41.                     self::$pass,
    42.                     array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")
    43.                 );
    44.                 self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    45.             } catch (PDOException $e) {
    46.                 exit('Error connecting to database: ' . $e->getMessage());
    47.             }
    48.         }
    49.  
    50.         return self::$dbh;
    51.     }
    config.php
    PHP:
    1. return [
    2. 'db_host'=>'localhost';
    3. 'db_name'=>'test';
    4. 'db_user'=>'root';
    5. 'db_pass'=>'';
    6.  
    7. ];
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    Подключать файл в конструкторе, я думаю это плохая идея
     
  7. Admiral_24

    Admiral_24 Новичок

    С нами с:
    18 ноя 2018
    Сообщения:
    12
    Симпатии:
    0
    Подскажите как сделать?
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @Admiral_24 Если хочешь со статиком тогда пише все в статике. В этом и заключается суть статика. Зачем ты так издиваешься над классом
    PHP:
    1. class DB {
    2.    public static function connect() {
    3.        $config = require....
    4.        ....
    5.        return $dbh;
    6.    }
    7. }
     
  9. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360