0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этой статье рассматриваются три наиболее популярных PHP-фреймворка: Symfony, Laravel и Yii2. Автор сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент. Статья предназначена для начинающих разработчиков, которые ещё не работали с PHP-фреймворками.</p>
1
<p>В этой статье рассматриваются три наиболее популярных PHP-фреймворка: Symfony, Laravel и Yii2. Автор сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент. Статья предназначена для начинающих разработчиков, которые ещё не работали с PHP-фреймворками.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Зачем нужен PHP-фреймворк</a></li>
3
<ul><li><a>Зачем нужен PHP-фреймворк</a></li>
4
<li><a>Как выбрать PHP-фреймворк</a></li>
4
<li><a>Как выбрать PHP-фреймворк</a></li>
5
<li><a>Symfony, Laravel и Yii2</a></li>
5
<li><a>Symfony, Laravel и Yii2</a></li>
6
<li><a>Какой PHP-фреймворк лучше</a></li>
6
<li><a>Какой PHP-фреймворк лучше</a></li>
7
<li><a>Шаблонизаторы</a></li>
7
<li><a>Шаблонизаторы</a></li>
8
<li><a>Заключение</a></li>
8
<li><a>Заключение</a></li>
9
</ul><h2>Зачем нужен PHP-фреймворк</h2>
9
</ul><h2>Зачем нужен PHP-фреймворк</h2>
10
<p>PHP - один из самых популярных и востребованных языков программирования. Его активно используют крупные проекты, например, Facebook и "ВКонтакте". На PHP написаны популярные системы управления контентом (CMS), в том числе WordPress. На этом движке работает около трети всех сайтов в интернете и около 60 % сайтов на CMS.</p>
10
<p>PHP - один из самых популярных и востребованных языков программирования. Его активно используют крупные проекты, например, Facebook и "ВКонтакте". На PHP написаны популярные системы управления контентом (CMS), в том числе WordPress. На этом движке работает около трети всех сайтов в интернете и около 60 % сайтов на CMS.</p>
11
<p><a>PHP развивается</a>, а версия 7 сделала этот язык стабильным. В таком случае, зачем нужны фреймворки и почему их часто используют вместо нативного языка? Вот несколько причин:</p>
11
<p><a>PHP развивается</a>, а версия 7 сделала этот язык стабильным. В таком случае, зачем нужны фреймворки и почему их часто используют вместо нативного языка? Вот несколько причин:</p>
12
<ul><li>Фреймворки ускоряют разработку. Например, PHP-фреймворк избавляет вас от необходимости писать запросы к базам данных. В фреймворках реализованы базовые функции CRUD, которые необходимы для работы с базами данных.</li>
12
<ul><li>Фреймворки ускоряют разработку. Например, PHP-фреймворк избавляет вас от необходимости писать запросы к базам данных. В фреймворках реализованы базовые функции CRUD, которые необходимы для работы с базами данных.</li>
13
<li>Написанные на фреймворках приложения легко масштабируются.</li>
13
<li>Написанные на фреймворках приложения легко масштабируются.</li>
14
<li>Поддерживать легче проект на фреймворке, чем на нативном PHP. Код фреймворков лаконичный, поэтому с ним просто работать.</li>
14
<li>Поддерживать легче проект на фреймворке, чем на нативном PHP. Код фреймворков лаконичный, поэтому с ним просто работать.</li>
15
<li>В PHP-фреймворках используется<a>модель MVC</a>. Она упрощает разработку.</li>
15
<li>В PHP-фреймворках используется<a>модель MVC</a>. Она упрощает разработку.</li>
16
<li>Приложения на фреймворках лучше защищены, чем приложения на чистом PHP.</li>
16
<li>Приложения на фреймворках лучше защищены, чем приложения на чистом PHP.</li>
17
<li>В фреймворках реализован принцип DRY. Это позволяет разработчикам писать меньше кода.</li>
17
<li>В фреймворках реализован принцип DRY. Это позволяет разработчикам писать меньше кода.</li>
18
</ul><p>Нативный PHP позволяет делать приложения. Но перечисленных выше преимуществ достаточно, чтобы обратить внимание на фреймворки.</p>
18
</ul><p>Нативный PHP позволяет делать приложения. Но перечисленных выше преимуществ достаточно, чтобы обратить внимание на фреймворки.</p>
19
<h2>Как выбрать PHP-фреймворк</h2>
19
<h2>Как выбрать PHP-фреймворк</h2>
20
<p>Выбрать фреймворк помогут ответы на следующие вопросы:</p>
20
<p>Выбрать фреймворк помогут ответы на следующие вопросы:</p>
21
<ul><li>Какая функциональность у фреймворка, соответствует ли она нуждам проекта?</li>
21
<ul><li>Какая функциональность у фреймворка, соответствует ли она нуждам проекта?</li>
22
<li>Насколько сложно изучать выбранный фреймворк?</li>
22
<li>Насколько сложно изучать выбранный фреймворк?</li>
23
<li>Легко ли масштабировать проект, созданный с помощью данного фреймворка?</li>
23
<li>Легко ли масштабировать проект, созданный с помощью данного фреймворка?</li>
24
<li>Насколько активно развивается инструмент?</li>
24
<li>Насколько активно развивается инструмент?</li>
25
<li>Есть ли гарантированная долгосрочная поддержка (LTS)?</li>
25
<li>Есть ли гарантированная долгосрочная поддержка (LTS)?</li>
26
<li>Есть ли активное сообщество?</li>
26
<li>Есть ли активное сообщество?</li>
27
</ul><h2>Symfony, Laravel и Yii2</h2>
27
</ul><h2>Symfony, Laravel и Yii2</h2>
28
<p>Перед погружением в детали коротко рассмотрим главные особенности наиболее популярных PHP-фреймворков. Это Symfony, Laravel и Yii2.</p>
28
<p>Перед погружением в детали коротко рассмотрим главные особенности наиболее популярных PHP-фреймворков. Это Symfony, Laravel и Yii2.</p>
29
<h3>Symfony</h3>
29
<h3>Symfony</h3>
30
<p>Symfony представляет собой набор PHP-компонентов, которые подходят для повторного использования. Фреймворк позволяет делать масштабируемые и производительные приложения. API Symfony интегрируется со сторонними приложениями, а также с инструментами для фронтенд-разработки, например, Angular JS.</p>
30
<p>Symfony представляет собой набор PHP-компонентов, которые подходят для повторного использования. Фреймворк позволяет делать масштабируемые и производительные приложения. API Symfony интегрируется со сторонними приложениями, а также с инструментами для фронтенд-разработки, например, Angular JS.</p>
31
<p>Symfony используют многие популярные проекты, например, Drupal и phpBB. Даже самый популярный PHP-фреймворк Laravel построен на основе Symfony.</p>
31
<p>Symfony используют многие популярные проекты, например, Drupal и phpBB. Даже самый популярный PHP-фреймворк Laravel построен на основе Symfony.</p>
32
<h3>Laravel</h3>
32
<h3>Laravel</h3>
33
<p>По состоянию на середину 2019 года это самый популярный PHP-фреймворк в мире. Текущая стабильная версия - 5.8.10. Популярность Laravel подчёркивает следующий факт: многие хостеры предлагают специальные решения для приложений, созданных с помощью этого фреймворка.</p>
33
<p>По состоянию на середину 2019 года это самый популярный PHP-фреймворк в мире. Текущая стабильная версия - 5.8.10. Популярность Laravel подчёркивает следующий факт: многие хостеры предлагают специальные решения для приложений, созданных с помощью этого фреймворка.</p>
34
<h3>Yii2</h3>
34
<h3>Yii2</h3>
35
<p>Yii был представлен в 2008 году. Это безопасный, быстрый и производительный фреймворк для разработки веб-приложений. Текущая версия - 2.0.19.</p>
35
<p>Yii был представлен в 2008 году. Это безопасный, быстрый и производительный фреймворк для разработки веб-приложений. Текущая версия - 2.0.19.</p>
36
<p>В Yii2 используется пакетный менеджер Composer для управления зависимостями. Благодаря ленивой загрузке Yii2 считается самым быстрым PHP-фреймворком.</p>
36
<p>В Yii2 используется пакетный менеджер Composer для управления зависимостями. Благодаря ленивой загрузке Yii2 считается самым быстрым PHP-фреймворком.</p>
37
<p>Ещё одна особенность Yii2 - интеграция с jQuery. Благодаря этому фронтенд-разработчикам удобно работать с приложениями, созданными на Yii2. Как и в Symfony, в Yii2 используются готовые компоненты. Это ускоряет разработку.</p>
37
<p>Ещё одна особенность Yii2 - интеграция с jQuery. Благодаря этому фронтенд-разработчикам удобно работать с приложениями, созданными на Yii2. Как и в Symfony, в Yii2 используются готовые компоненты. Это ускоряет разработку.</p>
38
<h2>Какой PHP-фреймворк лучше</h2>
38
<h2>Какой PHP-фреймворк лучше</h2>
39
<p>Все перечисленные фреймворки подходят для разработки веб-приложений. Однако у этих инструментов есть отличия, которые разработчик должен учитывать. Подробности ниже.</p>
39
<p>Все перечисленные фреймворки подходят для разработки веб-приложений. Однако у этих инструментов есть отличия, которые разработчик должен учитывать. Подробности ниже.</p>
40
<h2>Шаблонизаторы</h2>
40
<h2>Шаблонизаторы</h2>
41
<p>Шаблонизаторы ускоряют разработку и упрощают создание фронтенда приложения. Например, с помощью шаблонизаторов решается задача автоматического экранирования HTML.</p>
41
<p>Шаблонизаторы ускоряют разработку и упрощают создание фронтенда приложения. Например, с помощью шаблонизаторов решается задача автоматического экранирования HTML.</p>
42
<h3>Symfony</h3>
42
<h3>Symfony</h3>
43
<p>В Symfony по умолчанию используется Twig. Это обработчик шаблонов, который позволяет писать чистый код и расширяет возможности нативного PHP. Например, Twig упрощает создание экранирующих последовательностей.</p>
43
<p>В Symfony по умолчанию используется Twig. Это обработчик шаблонов, который позволяет писать чистый код и расширяет возможности нативного PHP. Например, Twig упрощает создание экранирующих последовательностей.</p>
44
<h3>Laravel</h3>
44
<h3>Laravel</h3>
45
<p>В этом фреймворке применяется шаблонизатор Blade. Он позволяет использовать код PHP в представлениях. Blade практически не влияет на скорость работы приложений, так как представления хранятся в отдельных файлах с расширением .blade.php. Код представлений преобразуется в нативный PHP.</p>
45
<p>В этом фреймворке применяется шаблонизатор Blade. Он позволяет использовать код PHP в представлениях. Blade практически не влияет на скорость работы приложений, так как представления хранятся в отдельных файлах с расширением .blade.php. Код представлений преобразуется в нативный PHP.</p>
46
<h3>Yii2</h3>
46
<h3>Yii2</h3>
47
<p>Этот фреймворк не использует сторонних шаблонизаторов по умолчанию. Но разработчик может выбирать инструменты в зависимости от решаемых задач. В число рекомендуемых шаблонизаторов входят Twig и Smarty.</p>
47
<p>Этот фреймворк не использует сторонних шаблонизаторов по умолчанию. Но разработчик может выбирать инструменты в зависимости от решаемых задач. В число рекомендуемых шаблонизаторов входят Twig и Smarty.</p>
48
<p>Промежуточный вывод: по данному критерию чистого победителя нет. Все фреймворки поддерживают работу с шаблонизаторами, что ускоряет разработку фронтенда приложений. Небольшое преимущество имеет Yii2, так как в нём не используется какой-либо шаблонизатор по умолчанию.</p>
48
<p>Промежуточный вывод: по данному критерию чистого победителя нет. Все фреймворки поддерживают работу с шаблонизаторами, что ускоряет разработку фронтенда приложений. Небольшое преимущество имеет Yii2, так как в нём не используется какой-либо шаблонизатор по умолчанию.</p>
49
<blockquote><h2>Изучайте Laravel на Хекслете</h2>
49
<blockquote><h2>Изучайте Laravel на Хекслете</h2>
50
<p>Курс по Laravel входит в профессию "PHP-программист". Первые<a>курсы в профессии</a>доступны бесплатно после регистрации.</p>
50
<p>Курс по Laravel входит в профессию "PHP-программист". Первые<a>курсы в профессии</a>доступны бесплатно после регистрации.</p>
51
</blockquote><h3>Модульность</h3>
51
</blockquote><h3>Модульность</h3>
52
<p>В Symfony есть стандартные компоненты, которые можно использовать для создания приложений. То есть Symfony - отличный пример модульного фреймворка.</p>
52
<p>В Symfony есть стандартные компоненты, которые можно использовать для создания приложений. То есть Symfony - отличный пример модульного фреймворка.</p>
53
<p>В Yii2 реализован<a>подход MVC</a>. В этом фреймворке тоже есть компоненты, однако модульность реализована не так хорошо, как в Symphony.</p>
53
<p>В Yii2 реализован<a>подход MVC</a>. В этом фреймворке тоже есть компоненты, однако модульность реализована не так хорошо, как в Symphony.</p>
54
<p>Laravel уступает Symfony и Yii2 в возможности использовать модульный подход для разработки приложений.</p>
54
<p>Laravel уступает Symfony и Yii2 в возможности использовать модульный подход для разработки приложений.</p>
55
<p>Промежуточный вывод: если вам нужен модульный PHP-фреймворк, выбирайте Symfony.</p>
55
<p>Промежуточный вывод: если вам нужен модульный PHP-фреймворк, выбирайте Symfony.</p>
56
<h3>Установка</h3>
56
<h3>Установка</h3>
57
<p>Каждый фреймворк поддерживает несколько вариантов установки. Например, Symfony, Laravel и Yii2 можно установить с помощью пакетного менеджера Composer. Все фреймворки после установки позволяют работать с шаблонным приложением.</p>
57
<p>Каждый фреймворк поддерживает несколько вариантов установки. Например, Symfony, Laravel и Yii2 можно установить с помощью пакетного менеджера Composer. Все фреймворки после установки позволяют работать с шаблонным приложением.</p>
58
<p>Промежуточный вывод: по критерию простоты установки победителей нет, каждый из трёх инструментов легко устанавливать.</p>
58
<p>Промежуточный вывод: по критерию простоты установки победителей нет, каждый из трёх инструментов легко устанавливать.</p>
59
<h3>Скорость разработки</h3>
59
<h3>Скорость разработки</h3>
60
<p>Symfony считается надёжным фреймворком, за которым стоит многочисленное и активное сообщество. Laravel быстро развивается и удерживает первое место в списке самых популярных фреймворков. Yii2 обеспечивает производительность приложений.</p>
60
<p>Symfony считается надёжным фреймворком, за которым стоит многочисленное и активное сообщество. Laravel быстро развивается и удерживает первое место в списке самых популярных фреймворков. Yii2 обеспечивает производительность приложений.</p>
61
<p>Если вам нужно как можно быстрее создать веб-приложение, и вы никогда не работали с PHP-фреймворками, выбирайте Laravel. Его проще всего изучать, и в сети больше всего руководств именно по Laravel.</p>
61
<p>Если вам нужно как можно быстрее создать веб-приложение, и вы никогда не работали с PHP-фреймворками, выбирайте Laravel. Его проще всего изучать, и в сети больше всего руководств именно по Laravel.</p>
62
<h3>Производительность</h3>
62
<h3>Производительность</h3>
63
<p>По мнению автора оригинальной статьи, наиболее производительным фреймворком является Yii2. Это оптимальный выбор для создания высоконагруженных приложений.</p>
63
<p>По мнению автора оригинальной статьи, наиболее производительным фреймворком является Yii2. Это оптимальный выбор для создания высоконагруженных приложений.</p>
64
<p>Производительность Laravel - дискутабельный вопрос. По этому критерию он уступает Yii2 и Symfony. Тем не менее в сети можно найти много рекомендаций по ускорению приложений на Laravel.</p>
64
<p>Производительность Laravel - дискутабельный вопрос. По этому критерию он уступает Yii2 и Symfony. Тем не менее в сети можно найти много рекомендаций по ускорению приложений на Laravel.</p>
65
<h3>Поддержка баз данных</h3>
65
<h3>Поддержка баз данных</h3>
66
<p>По этому критерию бесспорным лидером становится Symfony. Yii2 и Laravel отстают. Конкретную информацию можно увидеть в таблице.</p>
66
<p>По этому критерию бесспорным лидером становится Symfony. Yii2 и Laravel отстают. Конкретную информацию можно увидеть в таблице.</p>
67
<h3>Сообщество и ресурсы</h3>
67
<h3>Сообщество и ресурсы</h3>
68
<p>Многочисленное активное сообщество можно считать гарантией долгосрочной поддержки и развития инструмента. Вокруг рассматриваемых фреймворков сформированы большие сообщества. Комьюнити Symfony можно назвать наиболее зрелым.</p>
68
<p>Многочисленное активное сообщество можно считать гарантией долгосрочной поддержки и развития инструмента. Вокруг рассматриваемых фреймворков сформированы большие сообщества. Комьюнити Symfony можно назвать наиболее зрелым.</p>
69
<p><em>Важный момент - будущее фреймворка лучше оценивать не по статичной величине сообщества, а по его динамике и активности.</em></p>
69
<p><em>Важный момент - будущее фреймворка лучше оценивать не по статичной величине сообщества, а по его динамике и активности.</em></p>
70
<p>Если оценивать такой ресурс, как документацию и обучающие материалы, здесь лидером будет Laravel.</p>
70
<p>Если оценивать такой ресурс, как документацию и обучающие материалы, здесь лидером будет Laravel.</p>
71
<h3>Расширяемость</h3>
71
<h3>Расширяемость</h3>
72
<p>Функциональность фреймворков увеличивается с помощью расширений или пакетов. По этому критерию лидером остаётся Laravel. В каталоге Packalyst можно найти около 9000 пакетов для Laravel.</p>
72
<p>Функциональность фреймворков увеличивается с помощью расширений или пакетов. По этому критерию лидером остаётся Laravel. В каталоге Packalyst можно найти около 9000 пакетов для Laravel.</p>
73
<p>Yii2 и Symfony могут похвастаться 2800 и 2830 расширениями соответственно. Если для вас важна возможность расширить стандартную функциональность фреймворка с помощью дополнительных пакетов, выбор очевиден.</p>
73
<p>Yii2 и Symfony могут похвастаться 2800 и 2830 расширениями соответственно. Если для вас важна возможность расширить стандартную функциональность фреймворка с помощью дополнительных пакетов, выбор очевиден.</p>
74
<h3>Схожесть характеристик</h3>
74
<h3>Схожесть характеристик</h3>
75
<p>Выше мы рассматривали разницу между фреймворками. Пришло время сосредоточиться на похожих характеристиках. Вот они:</p>
75
<p>Выше мы рассматривали разницу между фреймворками. Пришло время сосредоточиться на похожих характеристиках. Вот они:</p>
76
<ul><li>Все три инструмента относятся к fullstack-фреймворкам. Они обеспечивают полный цикл разработки веб-приложения, включая фронтенд и бэкенд.</li>
76
<ul><li>Все три инструмента относятся к fullstack-фреймворкам. Они обеспечивают полный цикл разработки веб-приложения, включая фронтенд и бэкенд.</li>
77
<li>Это проекты с открытым исходным кодом, который можно найти на GitHub.</li>
77
<li>Это проекты с открытым исходным кодом, который можно найти на GitHub.</li>
78
<li>За Symfony, Laravel и Yii2 стоят многочисленные активные сообщества.</li>
78
<li>За Symfony, Laravel и Yii2 стоят многочисленные активные сообщества.</li>
79
<li>Все три фреймворка поддерживают объектно-реляционное отображение (ORM). Поэтому эти инструменты удобно использовать в парадигме объектно-ориентированного программирования.</li>
79
<li>Все три фреймворка поддерживают объектно-реляционное отображение (ORM). Поэтому эти инструменты удобно использовать в парадигме объектно-ориентированного программирования.</li>
80
<li>Перечисленные фреймворки представляют собой надёжные и безопасные инструменты для создания веб-приложений.</li>
80
<li>Перечисленные фреймворки представляют собой надёжные и безопасные инструменты для создания веб-приложений.</li>
81
</ul><p>Всё ещё не можете выбрать фреймворк? Вот тезисная информация, которая поможет определиться.</p>
81
</ul><p>Всё ещё не можете выбрать фреймворк? Вот тезисная информация, которая поможет определиться.</p>
82
<p>По Symfony:</p>
82
<p>По Symfony:</p>
83
<ul><li>есть LTS версии фреймворка;</li>
83
<ul><li>есть LTS версии фреймворка;</li>
84
<li>широкая функциональность из коробки;</li>
84
<li>широкая функциональность из коробки;</li>
85
<li>это самый стабильный фреймворк;</li>
85
<li>это самый стабильный фреймворк;</li>
86
<li>есть готовые компоненты, что позволяет использовать при создании приложений модульный подход.</li>
86
<li>есть готовые компоненты, что позволяет использовать при создании приложений модульный подход.</li>
87
</ul><p>По Yii2:</p>
87
</ul><p>По Yii2:</p>
88
<ul><li>поддерживает Ajax;</li>
88
<ul><li>поддерживает Ajax;</li>
89
<li>обеспечивает быстродействие и производительность приложений;</li>
89
<li>обеспечивает быстродействие и производительность приложений;</li>
90
<li>легко расширяемый фреймворк;</li>
90
<li>легко расширяемый фреймворк;</li>
91
<li>есть встроенный обработчик ошибок;</li>
91
<li>есть встроенный обработчик ошибок;</li>
92
<li>подходит для разработки веб-сервисов, построенных с учётом REST (RESTful web-service).</li>
92
<li>подходит для разработки веб-сервисов, построенных с учётом REST (RESTful web-service).</li>
93
</ul><p>По Laravel:</p>
93
</ul><p>По Laravel:</p>
94
<ul><li>самый популярный PHP-фреймворк;</li>
94
<ul><li>самый популярный PHP-фреймворк;</li>
95
<li>есть встроенный пакетный менеджер Composer;</li>
95
<li>есть встроенный пакетный менеджер Composer;</li>
96
<li>поддержка юнит-тестирования из коробки;</li>
96
<li>поддержка юнит-тестирования из коробки;</li>
97
<li>большое количество пакетов для расширения функциональности.</li>
97
<li>большое количество пакетов для расширения функциональности.</li>
98
</ul><h2>Заключение</h2>
98
</ul><h2>Заключение</h2>
99
<p>Symfony, Laravel и Yii2 можно назвать отличными инструментами для разработки веб-приложений. Автор оригинальной статьи предпочитает Laravel. В то же время он считает Symfony и Yii2 не менее мощными инструментами. Особенностью Symfony можно назвать развитое сообщество, а особенностью Yii - надёжность и безопасность.</p>
99
<p>Symfony, Laravel и Yii2 можно назвать отличными инструментами для разработки веб-приложений. Автор оригинальной статьи предпочитает Laravel. В то же время он считает Symfony и Yii2 не менее мощными инструментами. Особенностью Symfony можно назвать развитое сообщество, а особенностью Yii - надёжность и безопасность.</p>
100
<p>Пожалуйста, напишите в комментариях, какой PHP-фреймворк выбираете вы.</p>
100
<p>Пожалуйста, напишите в комментариях, какой PHP-фреймворк выбираете вы.</p>
101
<p><em>Адаптированный перевод статьи Michael J. Garbade<a>How to choose a PHP framework</a>. Мнение автора оригинальной публикации может отличаться от мнения администрации и сотрудников Хекслета.</em></p>
101
<p><em>Адаптированный перевод статьи Michael J. Garbade<a>How to choose a PHP framework</a>. Мнение автора оригинальной публикации может отличаться от мнения администрации и сотрудников Хекслета.</em></p>