OpenCart 🇺🇦

Статья "Как работает конфигурация Opencart ($this->config->*)"

Работает она очень просто. Если открыть загрузочный файл (index.php в корне), то увидим такой код:
// Config
$config = new Config();
$registry->set('config', $config);

// ...

// Store
if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) {
	$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`ssl`, 'www.', '') = '" . $db->escape('https://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
} else {
	$store_query = $db->query("SELECT * FROM " . DB_PREFIX . "store WHERE REPLACE(`url`, 'www.', '') = '" . $db->escape('http://' . str_replace('www.', '', $_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
}

if ($store_query->num_rows) {
	$config->set('config_store_id', $store_query->row['store_id']);
} else {
	$config->set('config_store_id', 0);
}
		
// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");

foreach ($query->rows as $setting) {
	if (!$setting['serialized']) {
		$config->set($setting['key'], $setting['value']);
	} else {
		$config->set($setting['key'], unserialize($setting['value']));
	}
}

if (!$store_query->num_rows) {
	$config->set('config_url', HTTP_SERVER);
	$config->set('config_ssl', HTTPS_SERVER);	
}
Что мы здесь видим? Сначала из бд делается выборка по таблице oc_store, затем id выбранного магазина заносится в конфиг с ключем config_store_id. Ниже видим запрос выборки из таблички settings для выбранного ранее магазина. После запроса цикл, который устанавливает значения (при этом выполняя десирреализацию данных (см. функцию unserialize()). Насчет выборки:

Здесь видим нужные нам поля - key и value. Собственно, в любом месте (контроллер, модель) мы можем вызвать:
$this->config->get('shipping_sort_order'); 
и получить в результате это значение:
Вот и все. И никаких хитростей...