出于某种原因,这给了我以下错误: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',
);
}
我知道你可以在数组中使用变量作为值,那么发生了什么?
答案 0 :(得分:3)
看起来您正在尝试将属性的默认值设置为变量。
你不能这样做,甚至不在数组内。这是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
}
}
答案 1 :(得分:0)
$ mysql在类中没有作用域。 您需要将它作为参数注入类构造函数,然后为类属性
定义数组值答案 2 :(得分:0)
您正在尝试引用类中的变量,该类在该类的外部中定义。
PHP不知道该类定义中的$mysql
是什么。