【问题标题】:PHP - Undefined variable config?PHP - 未定义的变量配置?
【发布时间】:2014-12-04 16:18:06
【问题描述】:

所以我有一个配置文件,config_inc.php:

<?php
static $config = Array();
$config['dbHost'] = 'localhost';
$config['dbPass'] = '';
$config['dbUser'] = 'root';
$config['dbName'] = 'recipes_comments';
?>

然后我有一个控制器,它应该使用 require_once 加载这些变量:

require_once "config_inc.php";
class Controller {
public function regUser() {
echo $config['dbHost'];
}
}

我试图查找有类似错误的帖子,但找不到提供解决此问题的解决方案的帖子。

当我尝试回显 config_inc.php 中定义的变量时,如上所示,我收到一个错误,即 config 未定义。

我的问题:为什么没有在 Controller 中定义配置,正确的方法是什么?

【问题讨论】:

标签: php configuration


【解决方案1】:

这是一个范围问题。您正在尝试访问您的班级在其范围内看不到的变量。

$config 是代码中的全局变量。也就是说,他存在于全局范围内。

试试这个:

require_once "config_inc.php";
class Controller {
    public function regUser() {
        echo $GLOBALS['$config']['dbHost'];
    }
}

【讨论】:

    【解决方案2】:

    config 没有在 Controller 中定义,因为它不是全局的。

    坏路 您首先必须在配置文件中将static 替换为global,然后在函数开头添加global $config

    正确的方法 不要在php中使用全局。相反,在类的构造函数中传递您的 $config 数组,或以其他方式添加它。例如

    require_once "config_inc.php";
    
    class Controller {
      private $config;
      public function regUser() {
        echo $this->config['dbHost'];
      }
      public function __construct($config)
      { 
        $this->config = $config;
      }
    }
    
    $controller = new Controller($config);
    $controller->regUser();
    

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      相关资源
      最近更新 更多