Framework yii2 что это

Обновлено: 06.07.2024

Yii2 это современный и широконаправленный PHP фреймворк, для разработки веб и консольных приложений. Он призывает к чистому написанию кода, без лишних связанностей, принципу DRY (don’t repeat yourself) направленный на снижение повторения кода, событийно-ориентированное программирование, когда выполнение подпрограммы определяется исходя из события запущенного пользователем, соглашение по конфигурации, по которому если класс соответствует соглашению наименованию, тогда он не нуждается в дополнительной конфигурации, а так же модульная структура приложения. Для фреймворка уже разработано много библиотек, виджетов и расширений как основными, так и сторонними разработчиками. Это все позволяет быстро разрабатывать качественные приложения.

Изучать и осваивать Yii2 поможет онлайн документация и wiki, есть документация на русском. Многие вопросы находят свои ответы на stackoverflow, а также возможность задать вопросы в соответствующем разделе (issue tracker) на GitHub. Помимо этого есть форум на официальном сайте, чат, активное сообщество в facebook.

Сразу из коробки реализована отложенная загрузка (lazy loading), это позволяет загружать и исполнять только те компоненты, которые нужны для выполнения запроса. Можно увеличить производительность за счет применения различных техник кеширования.

Это отличный фреймворк как для небольших проектов, которые легко можно начать, взяв за основу базовый шаблон так и для масштабных проектов, можно использовать продвинутый (advanced) шаблон. Хотя, нужно отметить, что выбор шаблона это совершенно не обязательный пункт, можно скачать фреймворк и без шаблона, выстроив необходимую структуру. Для большинства проектов Yii2 будет также удобен за счет возможности разделения функциональности на модули.

Возможности yii2

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

Фреймворк базируется на паттерне проектирования MVC. Для моделей используется Active Record (AR), прекрасно зарекомендовавший себя в Yii 1.0, сейчас он еще удобнее и эффективнее.Кроме Active Record для моделей

Для вывода информации во View есть варианты использования шаблонизаторов Smatry или Twig, также можно использовать сам PHP как шабонизатор, он прекрасно с этим справляется.

Контроллеры могут содержать действия (actions), поведения (behaviors) а так же другие функции. Их задача организовать взаимодействие моделей и представлений. Помните, лучшие контроллеры – тонкие контроллеры!

ActiveRecord

Работать со связанными данными становится очень просто и интуитивно понятно, если использовать ActiveRecord. Не придется писать множество запросов, километры SQL кода, заботится о синтаксисе при работе с конкретной СУБД. Используя AR можно составлять сложные запросы, выстраивать связи между различными базами данных (MySQL и MongoDB, например). Вот пример, как просто получить данные из базы:

Пример иллюстрирует выборку нужной статьи из базы и все комментарии к ней. Задействованы две таблицы: Post и Сomments

Аутентификация и авторизация

В базовом (basic) и расширенном (advanced) шаблонах уже реализованы базовые функции пользователя: методы регистрации, авторизации и аутентификации (разные компоненты), сброс пароля. RBAC (Role Based Access Control) позволяет реализовывать расширенные схемы авторизации. Можно разграничить доступ для множества групп (например, администраторы, модераторы, редакторы) пользователей.

Валидация

Можно использовать стандартные фильтры для валидации данных или создавать свои собственные с особой логикой.

Так поле title на форме должно быть заполнено печатными символами, не превышая количество знаков более 32.

Формы

Для простой и удобной работы с формами разработан специальный виджет ActiveForm. Для форм можно использовать валидацию на клиенте или на сервере, также доступна AJAX валидация.

Безопастность

Интернационализация (I18N) и локализация (L10N)

Создавать мультиязычные приложения легко, когда есть поддержка локализации в фреймворке.

Строку будет переведена в зависимости от языка выбранного пользователем. Результатом вывода может быть

Кеширование

Генерация кода

Генерация кода с помощью Gii позволяет создавать модели, контроллеры, CRUD (основные операции над базами данных - создание, чтение, обновление, удаление ) для моделей, генерировать формы, модули, расширения прямо из веб интерфейса.

Отладчик

Yii2 отладчик предоставляет информацию о приложении и конфигурации сервера, запрошенными данными, логах, производительности, выполнении запросов в БД и многое другое. Отладчик имеет удобную панель инструментов, которая отображает наиболее важную информацию.

yii debuger

Множество виджетов, хелперов, расширений

Здесь можно найти многие из тех, что уже созданы сторонними разработчиками или можно написать свои.

Официальные расширения Yii2

Эти расширения поддерживаются командой разработчиков фреймворка

apidoc API для создания документации.

authclient OpenID, OAuth и OAuth2.

debug отладчик для Yii2 приложений.

elasticsearch интегрирован полнотекстовый поисковый движок Elasticsearch.

faker для генерации произвольных данных.

imagine обертка над Imagine.

jui JQuery UI виджеты.

mongodb интеграция с MongoDB.

sphinx полнотекстовый поисковой движок Sphinx.

swiftmailer работа с электронной почтой посредством SwiftMailer.

Каждый разработчик может принять участие в разработке фреймворка Yii. Предлогайте свой код на GitHub, информируйте о найденных ошибках в issue, а также задавайте свои вопросы в чате.

Yii – это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений. Слово Yii (произносится как Йи [ji:] ) в китайском языке означает «простой и эволюционирующий». Также Yii может расшифровываться как акроним Yes It Is!

Для каких задач больше всего подходит Yii? ¶

Yii – это универсальный фреймворк и может быть задействован во всех типах веб-приложений. Благодаря его компонентной структуре и отличной поддержке кэширования, фреймворк особенно подходит для разработки таких крупных проектов, как порталы, форумы, CMS, магазины или RESTful-приложения.

Сравнение Yii с другими фреймворками ¶

Если вы уже знакомы с другими фреймворками, вам наверняка будет интересно сравнить их с Yii.

  • Как и многие другие PHP фреймворки, для организации кода Yii использует архитектурный паттерн MVC (Model-View-Controller).
  • Yii придерживается философии простого и элегантного кода, не пытаясь усложнять дизайн только ради следования каким-либо шаблонам проектирования.
  • Yii является full-stack фреймворком и включает в себя проверенные и хорошо зарекомендовавшие себя возможности, такие как ActiveRecord для реляционных и NoSQL баз данных, поддержку REST API, многоуровневое кэширование и другие.
  • Yii отлично расширяем. Вы можете настроить или заменить практически любую часть основного кода. Используя архитектуру расширений, легко делиться кодом или использовать код сообщества.
  • Одна из главных целей Yii – производительность.

Yii — не проект одного человека. Он поддерживается и развивается сильной командой и большим сообществом разработчиков, которые ей помогают. Авторы фреймворка следят за тенденциями веб-разработки и развитием других проектов. Наиболее подходящие возможности и лучшие практики регулярно внедряются в фреймворк в виде простых и элегантных интерфейсов.

Версии Yii ¶

На данный момент существует две основные ветки Yii: 1.1 и 2.0. Ветка 1.1 является предыдущим поколением и находится в состоянии поддержки. Версия 2.0 – это полностью переписанный Yii, использующий последние технологии и протоколы, такие как Composer, PSR, пространства имен, трейты и многое другое. 2.0 — текущее поколение фреймворка. На этой версии будут сосредоточены основные усилия несколько следующих лет. Данное руководство именно о версии 2.0.

Требования к ПО и знаниям ¶

Yii 2.0 требует PHP 5.4.0 и выше и наилучшим образом работает на последней версии PHP 7. Чтобы узнать требования для отдельных возможностей, вы можете запустить скрипт проверки требований, который поставляется с каждым релизом фреймворка.

Для разработки на Yii потребуется общее понимание ООП, так как фреймворк полностью следует этой парадигме. Также стоит изучить такие современные возможности PHP как пространства имён и трейты. Понимание этих концепций позволит вам более легко освоиться c Yii 2.0.

Found a typo or you think this page needs improvement?
Edit it on github !

Yii можно использовать для разработки любого вида веб-приложений. Благодаря своей основе компонентов, архитектуре и сложной поддержки кэширования, фреймворк подходит для разработки крупномасштабных проектов, таких как порталы, форумы, системы управления контентом (CMS), систем электронной коммерции, RESTful веб-сервисов и т.д.

Фреймворк Yii включает в себя следующие возможности:

  • Реализует для использования MVC (Model-View-Controller) архитектурный шаблон и способствует организации кода на основе этого шаблона.
  • Позволяет делать код простым и элегантным.
  • Yii является full-stack фреймворком, предоставляя множество проверенных и готовых к использованию функций: построитель запросов и ActiveRecord для реляционных и NoSQL баз данных, RESTful API, поддержку многоуровневого кэширования и т.п.
  • Yii чрезвычайно расширяемый фреймворк в котором можно заменить почти каждый кусочек кода и разрабатывать нужные расширения.
  • Высокая производительность является основной задачей Yii

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

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

В настоящее время есть две основные версии фреймворка, которые можно использовать: 1.1 и 2.0. Версия 1.1 является старым поколением и теперь находится в режиме технического обслуживания. Версия 2.0 представляет собой полностью переписанный Yii, с внедренными новейшими технологиями и протоколами, в том числе: Composer, PSR, пространств имен, Traits и т.д.

Версия 2.0 представляет нынешнее поколение фреймворка и будет получать основные усилия в области развития в течение следующих нескольких лет. Для использования Yii 2.0 требует PHP 5.4.0 или выше, а также базовых знаний объектно-ориентированного программирования (ООП).

Установка

Yii 2.0 полностью поддерживает Composer, де-факто менеджер пакетов PHP. Установка ядра фреймворка, а также расширений, обрабатываются с помощью Composer.

Требования PHP

Yii 2.0 требует PHP 5.4 или выше, что является огромным шагом вперед по сравнению с PHP версии 5.2, которая используется в Yii 1.1. В результате, есть много различий на уровне языка. Ниже приводится краткое изложение основных изменений в отношении PHP:

  • Namespaces
  • Анонимные функции
  • Короткий синтаксис массива, используется:
  • SPL классы и интерфейсы.
  • Поздние статические привязки.
  • Дата и время.
  • Traits.
  • intl расширение PHP для поддержки функций интернационализации.

Namespace

Самое очевидное изменение в Yii 2.0 является использование пространств имен. Почти каждый класс ядра в пространстве имен, например, yii\web\Request . Схема присвоения имен теперь следует структуре каталогов. Например, yii\web\Request указывает на то, что соответствующий файл класса web/Request.php размещается в этом каталоге.

Компоненты и объекты

Yii 2.0 имеет два основных класса: класса: yii\base\Object и yii\base\Component . Класс объекта представляет собой легкий базовый класс, который позволяет определять свойства объекта с помощью геттеров и сеттереров (getters и setters). Компонент класса простирается от объекта и поддерживает события и поведение.

Если ваш класс не нуждается в функции событий или поведения, следует рассмотреть возможность использования объекта в качестве базового класса. Это, как правило, имеет место для классов, которые представляют основные структуры данных.

Конфигурация объекта

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

В приведенном выше коде, последний параметр конструктора должен принять массив конфигурации, содержащий пары имя-значение для инициализации свойств в конце конструктора. Вы можете переопределить метод init() для выполнения инициализации работы, которая должна быть сделана после того, как конфигурация была применена.

Следуя этому соглашению, вы будете иметь возможность создавать и настраивать новые объекты, используя массив конфигурации:

События

В Yii 2, вы можете использовать любое имя события, инициировав событие посредством вызова метода trigger():

Чтобы прикрепить, обработчик к событию, используйте метод on():

Псевдонимы пути

Yii 2.0 позволяет использование псевдонимов путей для файлов/каталогов и адресов. Путь псеводонима начинается с символа @, чтобы отличить псевдонимы от нормальных путей файлов и каталогов, а также адресов. Например, псевдоним @yii относится к каталогу установки Yii. Пути псевдонимов поддерживаются в большинстве мест основного кода Yii.

Например, yii\caching\FileCache::$cachePath может занять как псеводоним пути, так и нормальный путь к каталогу. Псевдоним пути также тесно связан с классом имен.

Рекомендуется, чтобы псевдоним пути был определен для каждого корневого пространства имен, тем самым позволяя использовать Yii класс автозагрузчика без какой-либо дополнительной конфигурации. Например, поскольку @yii относится к каталогу установки Yii, класс yii\web\Request может автоматически загружается.

Views

Объект yii\web\View представляет собой вид части шаблона MVC. Если вы хотите получить доступ к данным контроллера или виджета в представлении, вы можете использовать $this->context .

Для вывода шаблона нужно использовать $this->render() , который возвращает результат рендинга.

Кроме того, в качестве основного языка шаблона, Yii 2.0 также позволяет использовать такие популярные шаблонизаторы как: Smarty и Twig. Для использования этих шаблонизаторов, необходимо настроить компонент представления приложения, установив свойство View::$renderers .

Models

Yii 2.0 использует yii\base\Model в качестве базовой модели, а также имеет новый метод scenarios() позволяющий объявлять поддерживаемые сценарии, и указать, в соответствии с каким сценарием производить работу с атрибутами.

В данном примере используется два сценария: backend и frontend. Для сценария backend, атрибуты email и role являются обязательными и могут быть массово присвоены. Для сценария frontend, атрибут email может быть массово присвоен, в то время как role не может. И email и role должны быть проверены с помощью метода rules() используемого для объявления правил проверки.

Controllers

Yii 2.0 использует yii\web\Controller в качестве базового класса контроллера. yii\base\Action является базовым классом для классов действий. Действие в контроллере должно возвращать содержимое:

Widgets

Yii 2.0 использует yii\base\Widget в качестве базового класса виджетов. Виджет начинается с методов begin() , and() и widget() следующим образом:

Темы (Themes)

Темы работают на основе механизма отображения пути, который отображает путь к файлу просмотра исходных текстов на тематическом пути просмотра файлов.

Консольные приложения

Консольные приложения организованы как контроллеры, как и веб-приложения. Контроллеры консоли должны проходить от yii\console\Controller . Чтобы выполнить команду консоли, используйте <route> , где <route> обозначает маршрут контроллера (например, sitemap/index). Дополнительные анонимные аргументы передаются в качестве параметров к соответствующему методу действия контроллера, в то время как названные аргументы обрабатываются в соответствии с декларациями в yii\console\Controller::options() .

Фильтры действий (Action Filters)

Действия фильтров реализуются с помощью поведения. Новый встраиваемый фильтр определяется с помощью yii\base\ActionFilter . Чтобы использовать фильтр, прикрепите класс фильтра к контроллеру в качестве поведения. Например, чтобы использовать yii\filters\AccessControl фильтр, нужно:

Assets

Представляет собой набор asset bundle файлов (например, файлы JavaScript, CSS файлы, файлы изображений и т.д.) в пределах каталога. Каждый asset bundle представлен как класс, расширяющий yii\web\AssetBundle . Регистрируется asset bundle с помощью yii\web\AssetBundle::register() .

Помощники

В Yii 2.0 используются статические вспомогательные классы, например, такие как:

  • yii\helpers\Html
  • yii\helpers\ArrayHelper
  • yii\helpers\StringHelper
  • yii\helpers\FileHelper
  • yii\helpers\Json

Формы

Построитель запросов (Query Builder)

Yii 2.0 представляет собой запрос БД с точки зрения объекта запроса, который может быть превращен в SQL заявление с помощью QueryBuilder. Например:

Active Record

Yii 2.0 вводит много изменений в Active Record. Два наиболее очевидных из них связаны с построением запросов и реляционной обработкой запросов. Построитель запросов используется с помощью класса yii\db\Query , который наследует все методы построения запросов.

От автора: приветствую, Вас, дорогие друзья. Какой путь обычно проходит PHP разработчик? Сначала он пишет с нуля, пробует, делает всё на примерах. Свои функции, классы, файлы, структура. Изобретает свои велосипеды. И это очень хорошо на первых этапах. Но позже приходит понимание, что много денег так не заработаешь и надо ускорять свою работу, используя CMS. Изучает, пробует, делает. После разработчик осознаёт, что в CMS всё не так гибко, как хотелось бы. И начинается поиск хорошего фреймворка для дальнейшей работы.

В данной статье я хочу рассказать вам о популярном PHP фреймворке Yii2, насколько он популярен, что есть в этом фреймворке, какие у этого фреймворка возможности и чем он может быть полезен разработчику.


Yii — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii означает простой, эффективный и расширяемый.

Так же стоит отметить, что один из разработчиков фреймворка — россиянин Александр Макаров. Он и занимается популяризацией фреймворка в России и не только. Наверное, это один из самых главных факторов, который повлиял на очень широкое распространение фреймворка в России и СНГ.


Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Популярность фреймворка Yii2

Для того, чтобы оценить популярность фреймворка, предлагаю обратиться к нескольким источникам статистики использования.

1. Статистика популярности от Sitepoin за 2015 год.


2. Популярность по статистике запросов, которую предоставляет Google Trends.


Как видно из графиков, и в первом и втором случае фреймворк Yii занимает уверенное третье место. Что, в общем, очень хорошо, учитывая, что это общемировая статистика. Но если мы возьмем статистику запросов в Google Trends по России, то картинка существенно меняется:


Из статистики видно, что в России и СНГ фреймворк Yii2 является самым популярным фреймворком. Прямо сейчас он делит популярность с Laravel. И каждый из них все равно существенно превосходят по популярности все остальные фреймворки.

Возможности Yii2

Популярность фреймворка на пустом месте не появляется. Для того, чтобы фреймворк обладал такой популярностью он должен в первую очередь обладать очень широкими возможностями и быть достаточно гибким. Сейчас предлагаю взглянуть, что же есть в Yii2 и какие у него возможности:

Yii2 – это один из самых быстрых фреймворков.

Он достаточно прост в изучении.

Структура проекта строится по паттерну MVC.

Для работы с базой данных имеются наборы классов DAO и ActiveRecord. DAO — это набор классов для непосредственного задания запросов к базе данных. ActiveRecord — классы, реализующие подход ORM, где таблица представляется классом, а записи таблицы — экземплярами класса. Всё — DAO и ActiveRecord, работает через PDO, отсюда вытекает большой список поддерживаемых баз данных: SQLite, MySQL/MariaDB, PostgreSQL, SQL Server, Oracle, Firebird/Interbase 6 и другие.

Имеется встроенная поддержка интернационализации. Так же есть возможность построения словоформ, как например 1 рубль, 10 рублей.

Генерация базового кода PHP генератором Gii, который является модулем Yii, изначально встроенным. Можно сгенериовать модель, контроллер или сразу модель, контроллер и views для операций CRUD над сущностью, таблицей. В Gii есть шаблоны генерации кода, которые можно изменить, чтобы файлы генерировались в том виде, в каком вы хотите.

Кеширование страниц и отдельных фрагментов.

Поддержка тем оформления

Возможность простого подключения сторонних классов, библиотек. При чём это делается очень просто. Можно подключить стороннюю CRM, если встроенная не устраивает

Верно так же о обратное. Можно очень легко подключить Yii к другому проекту. Подключается файл, создаётся экземпляр приложения и его можно использовать.

Миграции базы данных.

Аутентификация и авторизация. На мой взгляд всё реализовано логично и понятно. В пару строк не объяснишь, поэтому как-то кратко попробую. Разграничение доступа строится на основе ролей — RBAC. Строится иерархия Роль — Задача — Операция. Причём древовидная структура может быть большой. Роль присваивается пользователю. Пользователь может иметь несколько ролей. И по этой иерархии можно проверить есть ли связь между операцией, задачей и пользователем. Тем самым проверить доступность данного действия для пользователя. Фишка ещё в том, что эта иерархия может сохраниться как в базе, так в файле и другим образом. Авторизация выполнена в виде фильтра к контроллеру. Фильтр в Yii это код, который выполняется перед выполнением действия контроллера и решает, может ли выполниться действие контроллера при текущих условиях. В контексте авторизации может ли текущий пользователь выполнить текущую операцию. Кстати, есть ещё одна фишка — в этой иерархии можно описать дополнительные условия — бизнес-логику на допущение/не допущение при прочих равных условиях, но при текущих входных данных, условия выполнения. Например — многопользовательский блог и редактировать посты можно, но только хозяину поста.

Перехват и обработка ошибок.

Валидация входящих данных, записываемых данных — плюс к безопасности


Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Есть большие возможности по расширению функционала — компоненты и поведения, модули и т.д. и т.п.

Так же есть хорошие «плюшки» для безопасности. Есть возможности для предотвращение межсайтового скриптинга, предотвращение подделки межсайтовых запросов, предотвращение атак через cookie.

Виджеты, формы, таблицы и прочее выводимые на сайте зачастую выводятся с прикреплением, инеграцией jQuery для дополнительного функционала, клиентской валидации, ajax валидации и прочей функциональности.

Может я ещё какие-то фишки забыл написать, если вы считаете что еще что-то нужно сказать о возможностях фреймворка, дайте знать в комментариях.

Использование расширений

Порядок использования расширений, как правило, включает три шага:

Распаковать расширение в поддиректорию extensions/xyz базовой директории приложения, где xyz— имя расширения;

Подключить, настроить и использовать расширение.


Все достаточно просто, не так ли?

Но это было в первой версии Yii. Во второй версии все еще проще. В Yii2 появилась возможность автоматической установки расширений и настройки через Composer.

На официальном сайте фреймворка располагается на сегодняшний день 2085 расширений, которые разбиты на 15 категорий. Поэтому очень велика вероятность того, что вам не нужно будет писать расширение для ваших проектов с нуля, а вы сможете взять готовое расширение и использовать его как есть. Это еще один плюс популярных фреймворков.

Сообщество и документация

Я думаю, вы знаете и согласитесь, что во многих фрймворках отсутствует толковая документация на русском языке, а сообщество профессионалов очень не многочисленное.

И для того, чтобы разобраться с проблемой или найти решение приходится копаться в англоязычной документации фреймворка, либо лазить по зарубежным форумам. Понятно, что такой вариант устраивает не всех, не все хорошо владеют иностранными языками.


В Yii2 подобных недостатков нет. Как я уже указывал в этой статье – один из разработчиков фреймворка россиянин Александр Макаров. Он активно занимается продвижением и популяризацией фреймворка. Благодаря этому у фреймворка есть огромное русскоязычное сообщество и отличная документация. Это существенно упрощает изучение фреймворка и поиска решения проблем связанных с его использованием. Что, конечно, является огромным плюсом!

Использование Yii2 в сторонних системах

Нельзя не сказать о том, что фреймворк Yii2 может быть использован, как библиотека для разработки и улучшения сторонних систем, таких как WordPress, Joomla и других.


То есть если вам нужно расширить функционал какой-либо CMS, например, WordPress или Joomla, то вы можете подключить к ней фреймворк и использовать все его преимущества при разработке.

Сайты на Yii2

Напоследок взгляните на сайты, созданные на базе фреймворка Yii2. С использованием Yii2 разработано много проектов вот лишь малая часть этих сайтов.

Заключение

Yii2 – это динамично развивающийся фреймворк на PHP с хорошим русскоязычным сообществом и документацией. Хорошее сообщество и документация делает его достаточно удобным и доступным для изучения и использования. Благодаря популярности фреймворка, для него уже есть множество готовых написанных расширений. Так же в Yii2 удобно использовать сторонние библиотеки для расширения его функциональных возможностей. А возможность использования Yii2, как библиотеки для разработки и улучшения сторонних систем, таких как WordPress, Joomla, практически не ограничивает возможности фреймворка.

P.S. Вы используете фреймворки при разработке своих проектов? Если используете, то напишите в комментариях к статье, какие фреймворки вы используете. Если нет, то хотели бы вы освоить и использовать фреймворки?


Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

Читайте также: