繁体   English   中英

PHP - 类构造中的Require_once

[英]PHP - Require_once inside a class construct

当我使用require_once并尝试访问所需文件中的变量时,我得到一个错误,即变量( $db )未定义。

我试图将require_once语句放在几个不同的位置,因为我认为它可能是变量范围问题,但此时我尝试在构造函数中调用它并将值赋给类变量。

我的配置类:

class Config {

    public $db;

    public function __construct() {
        require_once (BASE_DIR."config/DBConfig.php");
        $this->db = $db;
    }
}

DBConfig文件如下所示:

$db['default']['hostname'] = 'localhost'

我会采用不同的方式并使用依赖注入,为您提供:

public function __construct((IDb)$Db) {
    $this->db=$Db;
}

这样,以后更容易测试您的软件,很明显这个类需要一些数据库对象。 这使得您的代码也更少耦合,这似乎是一个很好的架构决策。

此外,它还可以让您更轻松地开始使用例如不同的数据库类,从而节省您以后的时间和精力。

似乎由于Require_once仅在第一次创建类时获取文件,因此变量仅在我创建的第一个对象中可用。

那么,将require_once更改为require require_once用于包含定义类和函数的文件,a)不需要包含多次,b)如果包含多次,则会导致错误。 如果您始终要包含该文件,请跳过_once

话虽如此,包括数据库配置不止一次是一个糟糕的设计的迹象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM