Расположение конфига в расширении OpenCart

В настоящее время я разрабатываю расширения OpenCart. Я просматриваю существующие расширения, чтобы понять архитектуру (и знакомлюсь с концепциями MVC / PHPOO).

Часто появляется эта строка кода:

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

Моя интерпретация основана на чтении этот нить:

Я понимаю, что это присваивание переменной, где она обращается к модели (?) С именем config чтобы получить строку с именем service_seller_email из портала настроек администратора. Тем не менее, я попытался перемещаться по различным папкам MVC в OpenCart, и я не мог найти конкретный config.php, Не могли бы вы исправить мою интерпретацию, если она ошибочна?

РЕДАКТИРОВАТЬ: чтобы добавить к путанице, статья, которую я связал, указывает, что вам нужно load config в контроллере перед его использованием, например $this->language->load('product/search');, но я не могу найти такую ​​строку, как $this->config->load('...'); или т.п.

0

Решение

Ваша интерпретация неверна. конфиг класс не рассматривается как модель (несмотря на то, что он обращается к БД напрямую), а как системная библиотека класс — вот почему вы можете найти его в system/library/ папка.

OpenCart имеет свою реализацию сервисный локатор (Реестр) который используется для хранить объект конфигурации, так что вы можете получить к нему доступ из любого места (конечно, внутри OpenCart).

Загружается в оба index.php файлы (в корне и ниже admin/) как это:

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

это $registry это наш сервисный локатор, и он передается любому контроллеру в его __construct() метод. У каждого контроллера есть и магический метод __get() который отвечает за извлечение объектов из этого $registry взглянуть на абстрактный класс Controller в 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 таблица и объект конфигурации пытается найти его и получить его значение (вы можете посмотреть, как это работает в system/library/config.php).

Надеюсь, это прояснит ваше замешательство.

3

Другие решения

Глядя на документы, похоже, что значения конфигурации хранятся в setting Таблица. Config сам класс находится в /system/library/config.php,

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);
}
0
По вопросам рекламы [email protected]