Обновление с 3.x до 4.x

CodeIgniter 4 является переписанным фреймворком и не имеет обратной совместимости. Лучше подумать о преобразовании вашего приложения, чем о его обновлении. Как только вы это сделаете, обновление с одной версии CodeIgniter 4 до следующей будет несложным.

Философия «бережливого, среднего и простого» была сохранена, но реализация имеет много отличий по сравнению с CodeIgniter 3.

Контрольного списка из 12 шагов для обновления не существует. Вместо этого начните с копии CodeIgniter 4 в новой папке проекта, однако вы хотите установить и использовать ее , а затем преобразовать и интегрировать компоненты приложения. Мы постараемся выделить здесь наиболее важные моменты.

Не все библиотеки CI3 были перенесены или переписаны для CI4! Актуальный список смотрите в обсуждениях на подфоруме CodeIgniter 4 Roadmap !

Прочтите руководство пользователя, прежде чем приступать к преобразованию проекта!

Загрузки

  • CI4 по-прежнему доступен в виде готового к запуску zip или tarball, который включает руководство пользователя (хотя и в подпапке docs )
  • Его также можно установить с помощью Composer

Пространства имён

  • CI4 построен для PHP7.2 +, и все во фреймворке имеет пространство имен, кроме помощников.

Структура приложения

  • applicationПапка переименована appи структура все еще имеет systemпапки, с той же интерпретации , как и раньше
  • Фреймворк теперь предоставляет publicпапку, предназначенную как корень документа для вашего приложения.
  • Также есть writableпапка для хранения данных кеша, журналов и данных сеанса.
  • appПапка выглядит очень похоже на applicationдля CI3, с некоторыми изменениями названия, а некоторые вложенные папки перемещаются в writableпапку
  • Вложенной application/coreпапки больше нет, так как у нас есть другой механизм для расширения компонентов фреймворка (см. Ниже)

Загрузка класса

  • Больше не существует «суперобъекта» CodeIgniter, в котором ссылки на компоненты фреймворка магическим образом вводятся как свойства вашего контроллера.
  • Классы создаются там, где это необходимо, а компоненты управляются Services
  • Загрузчик классов автоматически обрабатывает размещение классов в стиле PSR4 в пространствах имен верхнего уровня App(приложения) и CodeIgniter(т. Е. Системы); с поддержкой автозагрузки композитора и даже с использованием обоснованного предположения, чтобы найти ваши модели и библиотеки, если они находятся в нужной папке, даже если они не имеют пространства имен
  • Вы можете настроить загрузку класса для поддержки любой структуры приложения, которая вам удобнее, включая стиль «HMVC».

Контроллеры

  • Контроллеры расширяют \ CodeIgniter \ Controller вместо CI_Controller
  • Они больше не используют конструктор (для вызова «магии» CI), если он не является частью базового контроллера, который вы делаете.
  • CI предоставляет Requestи Responseобъекты, с которыми вы можете работать — более мощный, чем CI3-way
  • Если вам нужен базовый контроллер (MY_Controller в CI3), сделайте его там, где хотите, например, BaseController расширяет контроллер, а затем ваши контроллеры расширяют его.

Модели

  • Модели расширяют \ CodeIgniter \ Model вместо CI_Model
  • Модель CI4 имеет гораздо больше функций, включая автоматическое подключение к базе данных, базовый CRUD, проверку в модели и автоматическую разбивку на страницы.
  • В CI4 также есть Entityкласс, который вы можете использовать для более подробного сопоставления данных с таблицами базы данных.
  • Вместо CI3 $this->load->model(x);вы теперь должны использовать , следуя соглашениям о пространствах имен для вашего компонента$this->x = new X();

Просмотры

  • Ваши представления выглядят так же, как и раньше, но они вызываются по-другому… вместо CI3 $this->load->view(x);вы можете использоватьecho view(x);
  • CI4 поддерживает представление «ячеек» для построения вашего ответа по частям
  • Парсер шаблонов все еще существует, но существенно улучшен

Библиотеки

  • Классы вашего приложения по-прежнему могут входить внутрь app/Libraries, но им не обязательно
  • Вместо CI3 теперь $this->load->library(x);вы можете использовать , следуя соглашениям о пространствах имен для вашего компонента$this->x = new X();

Помощники

  • Помощники почти такие же, как и раньше, хотя некоторые из них были упрощены.

События

  • Хуки заменены на События
  • Вместо CI3, которые $hook['post_controller_constructor']вы сейчас используете , с пространством именEvents::on('post_controller_constructor', ['MyClass', 'MyFunction']);CodeIgniter\Events\Events;
  • События всегда включены и доступны глобально

Расширение рамок

  • Вам не нужна coreпапка для хранения MY_...расширений или замен компонентов каркаса.
  • Вам не нужны MY_xклассы внутри папки с библиотеками для расширения или замены частей CI4.
  • Создайте любые такие классы там, где вам нравится, и добавьте соответствующие методы обслуживания app/Config/Services.phpдля загрузки ваших компонентов вместо стандартных.

Добавить комментарий