出于某种原因,这给出了以下错误:syntax error, unexpected T_VARIABLE
$mysql = json_decode(getenv("VCAP_SERVICES"));
$mysql = $mysql["mysql-5.1"][0]["credentials"];
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => $mysql['port'], // <-- Line with error
'login' => $mysql['username'],
'password' => $mysql['password'],
'database' => $mysql['name'],
'prefix' => ''
//'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
}我知道你可以在数组中使用变量作为值,这是怎么回事呢?
发布于 2013-01-03 17:04:14
看起来您正在尝试将属性的默认值设置为变量。
您不能这样做,即使在数组中也不能。这是PHP语法分析器的一半差劲,四分之一的PHP缺乏适当的错误消息,还有一点理智。
您需要在构造函数中执行此操作,而不是传入$mysql
$config = new DATABASE_CONFIG($mysql);
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => null,
'login' => null,
'password' => null,
'database' => null,
'prefix' => ''
//'encoding' => 'utf8',
);
public function __construct($mysql) {
$this->default['port'] = $mysql['port']; // etc
}
}发布于 2013-01-03 17:04:18
您需要将其作为参数注入到类构造函数中,然后为类属性定义数组值
发布于 2013-01-03 17:04:23
您正在尝试引用在类外部定义的类内的变量。
PHP不知道这个类定义中的$mysql是什么。
https://stackoverflow.com/questions/14135681
复制相似问题