Joomla-разработчикам: обращение к методам модели в HtmlView напрямуюКогда-то, давным-давно в одной далёкой галактике кто-то решил, что что было бы неплохой идеей ввести косвенный доступ к методам модели (MVC) для получения данных, добавив метод AbstractView::get()
. Этот метод извлекает модель и затем запускает get<Parameter>()
. Простыми словами, когда мы во View (файл HtmlView нашего компонента) видим конструкцию $this->item = $this->get('Item')
это означает обращение к методу getItem()
модели для текущего View.Но такой подход исключает любую возможность подсказки типов, аргументов и т. д. и делает все излишне сложным. Поэтому разработчики ядра Joomla объявили этот метод устаревшим с этим PR 44162. Новый способ выглядит так:
// Файл HtmlView компонента public function display($tpl = null) { $model = $this->getModel(); $this->items = $model->getItems(); parent::display($tpl); }Старый подход (то есть метод
get()
во View) будет удалён в Joomla 7. Памятуя о релизном цикле Joomla, это означает, что:1️⃣ осенью 2025г выйдет Joomla 6.2️⃣ 2 года она будет основной веткой. Joomla 5 будет в режиме поддержки3️⃣ через 2 года, в 2027 выйдет Joomla 7, в которой будет удалён этот метод.4️⃣ но Joomla 6 будет ещё 2 года в режиме тех.поддержки и в ней (до 2029 года) этот метод останется.Таким образом у разработчиков есть от 2,5 до 4,5 лет (на момент написания этого поста) на то, чтобы сделать этот рефакторинг.👩💻👩💻 [5.3] Deprecate AbstractView::get() #44162@webtolkru#joomla #разработка #php #webdev