首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中使用变量作为关联数组值时出错

在php中使用变量作为关联数组值时出错
EN

Stack Overflow用户
提问于 2013-01-03 17:00:09
回答 3查看 726关注 0票数 2

出于某种原因,这给出了以下错误:syntax error, unexpected T_VARIABLE

代码语言:javascript
复制
 $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',
    );
}

我知道你可以在数组中使用变量作为值,这是怎么回事呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-03 17:04:14

看起来您正在尝试将属性的默认值设置为变量。

您不能这样做,即使在数组中也不能。这是PHP语法分析器的一半差劲,四分之一的PHP缺乏适当的错误消息,还有一点理智。

您需要在构造函数中执行此操作,而不是传入$mysql

代码语言:javascript
复制
$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
    }

}
票数 3
EN

Stack Overflow用户

发布于 2013-01-03 17:04:18

您需要将其作为参数注入到类构造函数中,然后为类属性定义数组值

票数 0
EN

Stack Overflow用户

发布于 2013-01-03 17:04:23

您正在尝试引用在类外部定义的类内的变量。

PHP不知道这个类定义中的$mysql是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14135681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档