我在网上看到了几个使用类似方法的例子,但我不明白为什么它在这里失败。
我正在尝试将2个参数用于DB_HOST和DB_DATABASE,我想将其附加到字符串并将其分配给以下变量:
外部PHP文件:
define( 'DB_HOST', 'localhost');
define( 'DB_DATABASE', 'mydb');
class Database {
private static $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_DATABASE;
...
}
我尝试过单引号,双引号以及我能想到的所有内容但是我收到以下错误:
Parse error: syntax error, unexpected '.', expecting ',' or ';'
我已经尝试将 define('DB_HOST','localhost'); 放在类中(althogh这不是理想的,仅用于测试目的)但是然后我'得到:
解析错误:语法错误,意外T_STRING,期待T_FUNCTION
知道可能出现什么问题吗?
PS:我尝试使用普通的PHP变量(如 $ db_host ),但没有任何成功:S
答案 0 :(得分:1)
您无法像这样初始化properties,只能将它们初始化为常量值。即使这样也会产生同样的错误:
class Sample {
private static $dsn = 'a' . 'b';
}
您需要在其他地方初始化它。例如:
define( 'DB_HOST', 'localhost');
define( 'DB_DATABASE', 'mydb');
class Database {
private static $dsn;
public static function setup() {
self::$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_DATABASE;
}
}
Database::setup();