Я новичок в PHP, я столкнулся с странной вещью для меня в opencart PHP engine.
Существует файл под названием catalog/controller/module/slideshow.php
.
Этот класс расширяет класс Controller
Confused об использовании имени файла класса shortcode OpenCart
class ControllerModuleSlideshow extends Controller {
protected function index($setting) {
static $module = 0;
$this->load->model('design/banner');
$this->load->model('tool/image');
.....
$this->model_design_banner->getBanner($setting['banner_id']);
.....
Hm $this->model_design_banner
нет такого члена в этом классе, о, возможно, он находится в родительском классе.
Давайте проверим это, кд ....
<?php
abstract class Controller {
protected $registry;
protected $id;
protected $layout;
protected $template;
protected $children = array();
protected $data = array();
protected $output;
Хм .... ?? !!! WTF (извините)
Там нет такого члена в этом классе тоже .......
Я догадался, что это ярлык для catalog/controller/module/banner.php
// Здесь много вопросов, как, где?
Откроем catalog/model/design/banner.php
<?php
class ModelDesignBanner extends Model {
public function getBanner($banner_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "banner_image bi LEFT JOIN " . DB_PREFIX . "banner_image_description bid ON (bi.banner_image_id = bid.banner_image_id) WHERE bi.banner_id = '" . (int)$banner_id . "' AND bid.language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $query->rows;
}
}
Окей без предыдущих вопросов, это выглядит нормально ... стоп!
Если мы можем вызвать ярлык метода, он должен быть статическим ....
$this->db->query
В этом случае следует указать ничего ....
Так много странных вещей для меня
Как это действительно работает. Как отображается ярлык для функции, почему функция не является статической и так далее.
Просьба пояснить это, буду благодарен за любую помощь.
EDIT
Если объект нагрузки имеет метод, который загружает модель в своем классе, где же объявлен метод загрузки, есть и это так и должно быть в одном классе.
К сожалению, это моя ошибка. Это работает, но я не понимаю, как это сделать. Пожалуйста, объясните это – cdxulkqy
Я исправил свою ошибку, объясните, как это работает – cdxulkqy
Я обновил свой ответ, чтобы объяснить, как работает загрузка модели. –