PHP: class DB { public static $dsn = 'mysql:dbname=table;host=localhost'; public static $user = 'user'; public static $pass = 'password'; /** * Объект PDO. */ public static $dbh = null; /** * Statement Handle. */ public static $sth = null; /** * Выполняемый SQL запрос. */ public static $query = ''; /** * Подключение к БД */ public static function getDbh() { if (!self::$dbh) { try { self::$dbh = new PDO( self::$dsn, self::$user, self::$pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'") ); self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } catch (PDOException $e) { exit('Error connecting to database: ' . $e->getMessage()); } } return self::$dbh; } как брать данные подключения к бд с отдельного файла config.ini Код (Text): [database] driver = mysql host = localhost dbname= thesite user = thesite pass = thesite
PHP: class DB { public function __construct($config) { require_once "config.php"; $config->db['db_host']; $config->db['db_name']; $config->db['db_user']; $config->db['db_pass']; } } public static $dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host']; public static $user = $config['db_user']; public static $pass = $config['db_pass']; /** * Объект PDO. */ public static $dbh = null; /** * Statement Handle. */ public static $sth = null; /** * Выполняемый SQL запрос. */ public static $query = ''; /** * Подключение к БД */ public static function getDbh() { if (!self::$dbh) { try { self::$dbh = new PDO( self::$dsn, self::$user, self::$pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'") ); self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } catch (PDOException $e) { exit('Error connecting to database: ' . $e->getMessage()); } } return self::$dbh; } config.php PHP: return [ 'db_host'=>'localhost'; 'db_name'=>'test'; 'db_user'=>'root'; 'db_pass'=>''; ];
@Admiral_24 Если хочешь со статиком тогда пише все в статике. В этом и заключается суть статика. Зачем ты так издиваешься над классом PHP: class DB { public static function connect() { $config = require.... .... return $dbh; } }
@Admiral_24, вот ещё несколько шагов к просветлению: "...различные настройки, как всё это хранить и как со всем этим работать..."