【发布时间】:2019-09-30 04:24:38
【问题描述】:
以下是我的连接代码,无需配置文件(.ini 文件)即可正常工作。但是如果我使用配置文件,我会收到错误:
致命错误: 常量表达式在第 13 行的 singletonDB.php 中包含无效操作。
但如您所见,变量$dsn、$user 和$pass 不是静态变量。我不明白为什么我会收到非静态变量的静态变量相关错误。
我的最终目标是使用配置文件以及只保持与 DB 的单例连接。
<?php
$config = parse_ini_file("config.ini");
var_dump($config);
// Singleton to connect db.
class ConnectDb
{
// Hold the class instance.
private static $instance = null;
private $pdo;
private $dsn = $config['dsn_config'];
private $user = $config['user_config'];
private $pass = $config['password_config'];
// The db connection is established in the private constructor.
private function __construct()
{
echo nl2br("Inside constructor");
$this->pdo = new PDO($this->dsn, $this->user, $this->pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public static function getInstance()
{
if (! self::$instance) {
self::$instance = new ConnectDb();
}
return self::$instance;
}
public function getConnection()
{
return $this->pdo;
}
}
这是我的配置文件
;Local
dsn_config = 'mysql:host=127.0.0.1;port=3306;dbname=db_name;';
user_config = 'root';
password_config = 'root';
谢谢。
【问题讨论】:
标签: php database configuration singleton