【问题标题】:Using a global array inside a class在类中使用全局数组
【发布时间】:2011-09-05 06:11:59
【问题描述】:

我的目标是从另一个 PHP 文件中定义的全局数组中检索一些数据。我的代码在“database.php”文件中运行,而我要使用的数组在“config.php”文件中。

我的代码如下:

config.php

$CONFIG = array();
// ...
$CONFIG["DATABASE"] = array();
$CONFIG["DATABASE"]["USERNAME"] = "user";
$CONFIG["DATABASE"]["PASSWORD"] = "pass";
$CONFIG["DATABASE"]["HOSTNAME"] = "127.0.0.1";
$CONFIG["DATABASE"]["DATABASE"] = "my_db";
// ...

database.php

require('config.php');

class Database
{
    protected   $m_Link;
    private     $m_User;
    private     $m_Pass;
    private     $m_Host;
    private     $m_Data;
    private     $m_bConnected;

    public function __construct()
    {
        global $CONFIG;
        $this->m_User = $CONFIG["DATABASE"}["USERNAME"]; // Line #16
        $this->m_Pass = $CONFIG["DATABASE"}["PASSWORD"];
        $this->m_Host = $CONFIG["DATABASE"}["HOSTNAME"];
        $this->m_Data = $CONFIG["DATABASE"}["DATABASE"];
        $this->m_bConnected = false;
        $this->Connect();
    }

    // ...
};

给出的错误是:

解析错误:语法错误,意外 '}',期待 ']' 在 C:...\database.php 第 16 行

我无法弄清楚我在这里做错了什么。

请帮我解决这个错误。

(注:PHP版本为5.3.0)

【问题讨论】:

  • 为什么不将$CONFIG['DATABASE'] 作为参数传递给Database 类构造函数? public function __construct($config) {那你就不需要全局了。
  • 我同意格雷格的观点。 (真正的)问题不是错字,而是您诉诸全局状态而不是使用依赖注入。传入配置数组。

标签: php arrays class constructor global


【解决方案1】:

["DATABASE"} = ["DATABASE"] 在所有 4 行上。

【讨论】:

    【解决方案2】:

    你没有正确配对你的括号

    $this->m_User = $CONFIG["DATABASE"}["USERNAME"]; 
    ----------------------------------^
    

    应该是

    $this->m_User = $CONFIG["DATABASE"]["USERNAME"]; 
    

    【讨论】:

      【解决方案3】:

      之后您在第 16 行和第 3 行出现拼写错误。

      ["DATABASE"} = ["DATABASE"] 应该是 `["DATABASE"] = ["DATABASE"]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-23
        • 1970-01-01
        • 2013-01-12
        • 2011-09-05
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多