Fatal error: Constant expression contains invalid operations in как передать конфиг? 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: public $dsn; public $user; .... public function __construct($config){ $this->dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host']; $this->user = ... }
@Admiral_24 кавычки public static $dsn = 'mysql:dbname='.(вар)$config['(пхп)db_name'].';host='.$config['db_host']; юзай двойные чтоли
Fatal error: Uncaught Error: Access to undeclared static property: DB::$dsn in PHP: class DB { public $dsn; public $user; public $pass; public function __construct($config){ include "config.php"; $this->dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host']; $this->user = $config['db_user']; $this->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; }
$this->dsn = 'mysql:dbname='.$config['db_name'].';host='.$config['db_host']; заменить на $this->dsn = 'mysql:dbname='.$config["db_name"].';host='.$config["db_host"]; кавычки --- Добавлено --- и закрывающую добавь _host"]';
@Admiral_24 эммм ну к примеру потому что они необходимы у тебя грубо написано так $dsn='var'secondvar; то есть переменная синтаксически не верно задаётся