配置在OpenCart扩展中的位置

时间:2014-09-26 03:13:29

标签: php opencart

我目前正在开发OpenCart扩展程序。我正在查看现有的扩展以了解架构(并熟悉MVC / PHPOO概念)。

通常会出现这行代码:

  

$ seller_email = $ this-> config-> get('service_seller_email');

我的解释基于阅读this主题:

我理解这是一个变量赋值,它正在访问一个名为config的模型(?),以从管理设置门户中检索名为service_seller_email的字符串。但是,我尝试浏览OpenCart中的各种MVC文件夹,但找不到特定的config.php。如果这是错误的,请你纠正我的解释?

编辑:为了引起混淆,我链接的文章指出您在使用它之前需要在控制器中load config,例如$this->language->load('product/search');,但我找不到诸如$this->config->load('...');之类的行。

3 个答案:

答案 0 :(得分:3)

您的解释不正确。 config 类不被视为模型(尽管它直接访问DB)但是作为系统库类 - 这就是为什么你可以在{{ 1}}文件夹。

OpenCart具有service locator (registry)的实现,用于存储配置对象,以便您可以从任何地方直接访问它(当然,在OpenCart内部)。

它加载在system/library/个文件中(在root和index.php下),如下所示:

admin/

这个$config = new Config(); $registry->set('config', $config); 是我们的服务定位器,它被传递给它的$registry方法中的任何控制器。每个控制器还有一个魔术方法__construct(),它负责从__get()中检索对象 - 看看每个控制器扩展(并且应该扩展)的$registry处的抽象Controller类。 / p>

这就是你可以直接自由打电话的原因

system/engine/controller.php

第一部分$this->config->get('some_config_key'); 将落入$this->config方法,将__get()值作为'config'传递,然后将其传递给下一个调用

$key

由于配置对象在我们的服务定位器的return $this->registry->get($key); 密钥下注册,因此会检索并返回它,以便我们可以在其上调用'config'

现在get('some_config_key')密钥存储在some_config_key表中的数据库中,配置对象尝试找到它并获取它的值(您可以查看它在setting中的工作原理{1}})。

希望这能澄清你的困惑。

答案 1 :(得分:0)

查看docs,看起来配置值存储在setting表中。 Config类本身位于/system/library/config.php

答案 2 :(得分:0)

admin > index.php你会找到

// Config
$config = new Config();
$registry->set('config', $config);

初始化的地方。该课程位于

system > library > config.php

加载在system > engine >loader.php

中的配置
public function config($config) {
    $this->config->load($config);
}