@ademar26

Где находится файл load.php?

Где находится файл контроллера load.php Opencart 2.0? По которому идет обращение $this->load->language $this->load->model $this->load->controller
И так же не могу понять как выбираются данные по методу
$this->language->get()
$this->config->get ()
$this->request->get()
  • Вопрос задан
  • 377 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony
Загрузчик ($this->load) описан в классе Loader, лежит в /upload/system/engine/loader.php
$this->config - Это экземпляр класса Config, в которые загружены данные из БД (таблица settings).
$this->request - экземпляр класса Request, лежит в /upload/system/library/request.php
Описание класса Language также можно найти в папке /upload/system/library/

Более подробно про конфиг.
Файл config.php а папках "catalog" и "admin" не имеют прямого отношения к классу экземпляру класса Config, который доступен через $this->config в различных частях системы.
Изначально в него загружаются данные из файла upload/system/config/default.php
Далее в него загружаются данные из конфига приложения. По умолчниаю это файл upload/system/config/catalog.php, но это вы можете переопределить в файлах "catalog/config.php" и "admin/config.php".
Эта логика описана в файле upload/system/framework.php.
Далее (не знаю точно каким образом) в конфиг также загружаются данные из таблицы settings.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Так как у вас обращение через $this идёт - значит вы в файле какого-то класса. Если в самом этом классе нет такого свойства, то два варианта. Первый - у вас класс наследуется от какого-то другого. Ищите этот класс - либо в этой же папке, либо смотрите в начале файла что у вас в use написано. Проверяйте классы выше по цепочке наследования - ищите это свойство. Если не нашли - тогда ищите по цепочке наследования метод __get() у класса.
Ещё может быть настроена автозагрузка классов - тогда надо искать классы, используемые в use с учётом неё.
Ну или поставьте какую-нибудь IDE для php - она по ctrl+клик на ->load должна вам показать, где это свойство задано.
Ответ написан
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
$this->load->language
это не цепочка файлов, это объект и цепочка его методов. И метод load судя по всему находится в том же файле, откуда Вы взяли этот кусок кода, так как $this это текущий класс. Возможно метод находится не в нем, а в классе от которого он унаследован.
Что бы понять что и как, почитайте про ООП.
Ответ написан
@surfernsk
$this->load определен в /system/library/config.php
public function load($filename) {
    		$file = DIR_CONFIG . $filename . '.php';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы