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 のパーサーが機能せず、4 分の 1 は 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

そのクラスの外部で定義されているクラス内の変数を参照しようとしています。

$mysqlPHP は、そのクラス定義の中に何があるかわかりません。

于 2013-01-03T09:04:23.470 に答える