2

出于某种原因,这给了我以下错误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',
    );
}

我知道您可以将变量用作数组中的值,那么发生了什么?

4

3 回答 3

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
    }

}
于 2013-01-03T09:04:14.030 回答
0

$mysql 在类中没有作用域。您需要将其作为参数注入到类构造函数中,然后为类属性定义数组值

于 2013-01-03T09:04:17.867 回答
0

您正在尝试引用在该类之外定义的类中的变量。

PHP 不知道$mysql该类定义中的内容。

于 2013-01-03T09:04:23.470 回答