Какой фреймворк выбрать php

Выбираем самый популярный фреймворк PHP в 2021 году: рейтинг лучших

Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

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

Топ фреймворков php: сравнение

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

Популярные фреймворки php: сравнение и описание

Laravel

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

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

Symfony

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

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

он легко интегрируется со многими фреймворками JavaScript, что не может не радовать веб-разработчиков.

Codeigniter

Простой и элегантный php-фреймворк, на котором достаточно легко и быстро можно писать код. Многие разработчики возносят его в статус «идеального».

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

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

CakePHP

Данный фреймворк среди опытных разработчиков негласно н азывают «эталоном надежности». Дополнительно к надежности у него отмечают:

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

удобство работы при написании веб-приложений и крупных интернет-проектов,

очень оптимизированное взаимодействие между расширениями этого фреймворка.

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

Изначально Yii создавался как инструмент для эффективной работы с AJAX, а со временем он перерос в простой, но мощный фреймворк php.

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

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

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

Источник

Лучшие PHP-фреймворки в 2020 году

Что такое фреймворк и зачем он нужен?

Как выбрать PHP-фреймворк?

ТОП фреймворков PHP

Laravel

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

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

Подходит для создания любого типа проектов, включая SaaS и электронную коммерцию. Малые компании выбирают Laravel, поскольку он прост в освоении, а крупные предприятия – благодаря функциональным возможностям.

Symfony

Выделяется расширенными и продвинутыми функциями.

Symfony выбирают для сложных веб-ресурсов, где требуется предсказуемость, поддержка и оптимизация, а также корпоративных проектов.

Phalcon

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

Phalcon выбирают крупные компании для реализации любых типов программных решений.

CodeIgniter

Большинство PHP-фреймворков требуют, чтобы пользователь следовал подходу MVC, и хотя CodeIgniter также поощряет использование шаблона MVC, он не применяет его. Предлагает кэширование, поддержку нескольких баз данных, маршрутизацию и другие функции, которые широко распространены в современных веб-приложениях. Можно использовать сторонние и самописные библиотеки с помощью менеджера Sparks, устанавливать дополнения поддержки модульности (HMVC).

Codeigniter используется малыми и крупными компаниями для создания API и легких веб-приложений, которые можно легко масштабировать.

Поставляется с чрезвычайно мощным набором генераторов кода, известным как Gii. Функция Gii состоит в том, чтобы упростить процесс объектно-ориентированного программирования и быстрого прототипирования, который предоставляет веб-интерфейс, помогая пользователю генерировать желаемый код в интерактивном режиме. Среди других особенностей – доступность нескольких пакетов для обеспечения безопасности и наборов настроек для ускорения работы.

Рекомендуется для создания высокопроизводительных и крупномасштабных веб-проектов: блогов, SaaS-приложений, социальных сетей.

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

Slim подходит для создания микросервисов, restful API для одностраничных приложений (SPA) и масштабируемых систем. Помогает разрабатывать быстрые и легкие API несколькими строками кода.

Lumen

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

Источник

Как выбрать тот самый PHP-фреймворк. Сравнительное тестирование

Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

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

Для этого нужно учесть достаточно большое количество характеристик, от «как быстро всё будет работать» до «а необходима ли нам эта фича?». И так каждый раз. Именно в моменты мозгового штурма команда сравнивает удобство фреймворка, скорость, набор фич, которые реализованы в нем или в совместимых с ним модулях.

Но какой же всё-таки лучше, быстрее и производительнее?

Разработчики постоянно проводят сравнение фреймворков, чтобы прояснить для себя этот вопрос. Например, в статье Lukasz Kujawa приведено сравнение PHP фреймворков. Одно «но» — статья за 2013 год. А ведь время идёт… Поэтому мы решили провести своё, актуальное сравнение фреймворков.

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

Одной из основных целей данной статьи также является попытка практическим путем определить улучшения в производительности и эффективности новых версий PHP. Поэтому тестирование было проведено на РНР 5.6/7.0/7.1

Что будем сравнивать?

Для сравнения были выбраны следующие фреймворки:

Методика тестирования и тестовый стенд

Машина, на которой производилось тестирование, обладает следующими характеристиками:

Operation system: Linux Mint 17 Cinnamon 64-bit
Cinnamin Version 2.2.16
Linux Kernel: 3.13.0-24-generic
Processor: Intel Core i3-4160 CPU 3.60 Ghz X 2
Memory: 8 GB

Server version: Apache/2.4.7 (ubuntu)
Server build: Jul 15 2016
php 7.1 / php7.0 / php5.6

Вводим команду git clone https://github.com/kenjis/php-framework-benchmark — и фрейм уже на нашей машине. Поскольку мы использовали Mint, необходимо выполнить настройку:

# Added net.netfilter.nf_conntrack_max = 100000 net.nf_conntrack_max = 100000 net.ipv4.tcp_max_tw_buckets = 180000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 10

Немного о структуре самого php-framework-benchmark:

/benchmarks — содержит bash-скрипты, отвечающие за сбор информации о количестве запросов в секунду (при помощи утилиты ab), количестве информации, сколько времени было потрачено и сколько файлов вызывалось из файла «точки старта».

/lib — директория, в которой находятся файлы, отвечающие за обработку полученной информации после вывода страницы “Hello world”, вывод таблиц с результатами и построение диаграмм.

Остальные папки — это заготовки фреймов, в которые уже добавлен один контроллер, который вернет строку “hello world” при обращении по URI, составленному по правилам обращения к данному фреймворку.

Для запуска теста сначала нужно настроить фреймворки. Рассмотрим два подхода.

Команда bash setup.sh настроит те фремворки, которые описаны в файле list.sh. Вы можете его редактировать: добавлять и удалять папки для тестирования. То есть конфигурировать так, как вам необходимо.

Командой bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/ вы можете установить какие-то отдельные фреймворки, задав их параметрами к команде. В некоторых случаях это удобно, но мы использовали первый подход.

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

Для отображения графиков мы воспользовались ссылкой http://localhost/php-framework-benchmark/.

Как вы понимаете, необходимо было произвести настройку Apache и заставить его смотреть в папку с фреймом. Всё это описано в readme, поэтому вопросов не возникает.

Результаты тестирования фреймворков

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

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

Вторая форма — это результат тестирования в виде таблицы (хватить наглядности, давайте говорить серьезно — дайте мне больше чисел!).

Производительность (throughput)

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

Мы получили следующие результаты (запросы в секунду):

php 5.6php 7.0php 7.1
phalcon-3.1.25058.005130.007535.00
ci-3.02943.554116.314998.05
slim-3.02074.593143.943681.00
yii-2.01256.312276.372664.61
silex-1.31401.922263.902576.22
lumen-5.11316.462384.242741.81
ze-1.01181.141989.991741.81
phpixie-3.2898.631677.151896.23
fuel-1.81044.771646.671770.13
bluz-7.3.1— *1774.001890.00
zf-2.5198.66623.71739.12
zf-3.0447.881012.571197.26
symfony-2.7360.03873.40989.57
symfony-3.0372.19853.511022.28
laravel-5.3258.62346.25625.99
laravel-5.4219.82413.49600.42

* — bluz-7.3.1 не поддерживает php 5.6

Для наглядности построили графики для каждой версии PHP:

PHP5.6:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP7.0:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP7.1:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Сводная накопительная диаграмма (по фреймворкам):
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Занимаемая память (peak memory)

Эта характеристика (в мегабайтах) отвечает за количество занимаемой фреймворком памяти при выполнении поставленной перед ним задачи. Чем меньше данное число, тем лучше для нас и для сервера:

php 5.6php 7.0php 7.1
phalcon-3.1.20.270.380.37
ci-3.00.420.380.38
slim-3.00.610.550.55
yii-2.01.310.910.91
silex-1.30.740.650.65
lumen-5.10.800.630.63
ze-1.00.790.560.56
phpixie-3.21.220.820.82
fuel-1.80.70.60.6
bluz-7.3.1— *0.690.69
zf-2.53.061.341.34
zf-3.02.121.091.08
symfony-2.73.111.411.42
symfony-3.02.861.301.32
laravel-5.32.912.042.04
laravel-5.43.041.451.49

* — bluz-7.3.1 не поддерживает php 5.6

PHP 5.6:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP 7.0:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP 7.1:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Сводная накопительная диаграмма (по фреймворкам):
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Время выполнения

Время выполнения — время, затрачиваемое системой для выполнения поставленной задачи. Измеряется от начала выполнения задачи до выдачи результата системой.

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

Время приведено в миллисекундах (ms):

php 5.6php 7.0php 7.1
phalcon-3.1.21.3001.4701.080
ci-3.00.9960.8181.007
slim-3.01.5301.2280.662
yii-2.01.4781.4101.639
silex-1.34.6571.6252.681
lumen-5.12.1211.8291.228
ze-1.02.6292.0691.528
phpixie-3.29.3294.7571.911
fuel-1.83.2832.6841.425
bluz-7.3.1— *1.6191.921
zf-2.522.0425.0113.998
zf-3.012.6802.5062.989
symfony-2.76.5293.9022.384
symfony-3.09.3353.9872.820
laravel-5.319.8854.8402.622
laravel-5.419.5614.7583.940

PHP 5.6:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP 7.0:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

PHP 7.1:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Сводная накопительная диаграмма (по фреймворкам):
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

Подключаемые файлы

Характеристика, отвечающая за количество подключаемых файлов, которые описаны в файле «точки входа» фреймворка. Понятно, что система тратит какое-то время на поиск и подключение. Следовательно, чем меньше файлов, тем быстрее будет осуществляться первый запуск приложения, так как обычно в последующие разы фреймворк работает с кэшем, что ускоряет работу:

phalcon-3.1.25
ci-3.026
slim-3.053
yii-2.046
silex-1.363
lumen-5.137
ze-1.068
phpixie-3.2163
fuel-1.853
bluz-7.3.195
zf-2.5222
zf-3.0188
symfony-2.7110
symfony-3.0192
laravel-5.338
laravel-5.4176

Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

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

в Laravel 5.3 можно сгенерировать файл compiled.php, и тем самым уменьшить количество подключаемых файлов, собрав их в один. Но есть одно «но»: команды для генерации этого файла в Laravel 5.4 больше нет. Разработчик решил удалить эту фичу, так как посчитал (https://github.com/laravel/framework/pull/17003), что для настройки производительности лучше использовать opcache.

Стоит ли обновляться?

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

При переходе с PHP 5.6 на PHP 7.0 средний прирост производительности составил почти +90%, при этом минимальный прирост производительности составил +33% для Laravel 5.3, а максимум — >200% для Zend Framework 2.5.

Переход с версии 7.0 на 7.1 уже не так шокирует, но всё же в среднем даёт почти 20% прирост производительности.

Сведя все полученные данные по производительности различных версий PHP, получим вот такие «матрасы»:
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php
Забавный факт: Laravel 5.3 показал наименьший прирост производительности при миграции с PHP 5.6 на PHP 7.0, но при этом наибольший прирост при миграции с версии 7.0 на версию 7.1, и как итог — производительность Laravel 5.3 и 5.4 на PHP 7.1 практически одинакова.

Потребление памяти тоже оптимизировали, так что переход с PHP 5.6 на PHP 7.0 позволит вашему приложению потреблять на 30% меньшем памяти.

Обновление с версии 7.0 до версии 7.1 практически не даёт прироста, а в последних Symfony и Laravel так и вовсе уходим в «минус», потому что они начинают чуть больше «кушать».
Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php
Осталось ещё посмотреть на время выполнения, и да, тут тоже всё отлично:

Примечание. Тестирование при помощи ab — с чем мы столкнулись

Какой фреймворк выбрать php. Смотреть фото Какой фреймворк выбрать php. Смотреть картинку Какой фреймворк выбрать php. Картинка про Какой фреймворк выбрать php. Фото Какой фреймворк выбрать php

«А что со slim и phpixie» — этот вопрос подтолкнул на расследование поведения утилиты ab при взаимодействии с этими фреймворками.

Выполним тест отдельно для Slim-3.0:

Concurrency Level: 10
Time taken for tests: 5.005 seconds
Complete requests: 2
Failed requests: 0
Total transferred: 1800 bytes
HTML transferred: 330 bytes
Requests per second: 0.40 [#/sec] (mean)
Time per request: 25024.485 [ms] (mean)
Time per request: 2502.448 [ms] (mean, across all concurrent requests)
Transfer rate: 0.35 [Kbytes/sec] received

Что-то не так — количество запросов в секунду всего 0.4 (!)

Concurrency Level: 10
Time taken for tests: 3.004 seconds
Complete requests: 1961
Failed requests: 0
Total transferred: 1995682 bytes
HTML transferred: 66708 bytes
Requests per second: 652.86 [#/sec] (mean)
Time per request: 15.317 [ms] (mean)
Time per request: 1.532 [ms] (mean, across all concurrent requests)
Transfer rate: 648.83 [Kbytes/sec] received

Дело было в Keep Alive соединении, подробнее можно узнать тут.

“When you make requests with «Connection: keep-alive» the subsequent request to the server will use the same TCP connection. This is called HTTP persistent connection. This helps in reduction CPU load on server side and improves latency/response time.

If a request is made with «Connection: close» this indicates that once the request has been made the server needs to close the connection. And so for each request a new TCP connection will be established.

By default HTTP 1.1 client/server uses keep-alive where as HTTP 1.0 client/server don’t support keep-alive by default.”

Таким образом, тест для Slim должен выглядеть так:

Concurrency Level: 10
Time taken for tests: 3.000 seconds
Complete requests: 10709
Failed requests: 0
Total transferred: 2131091 bytes
HTML transferred: 353397 bytes
Requests per second: 3569.53 [#/sec] (mean)
Time per request: 2.801 [ms] (mean)
Time per request: 0.280 [ms] (mean, across all concurrent requests)
Transfer rate: 693.69 [Kbytes/sec] received

Заключение

Как и стоило ожидать безоговорочным лидером по производительности (но не скорости разработки) является Phalcon. Второе место, — а на самом деле первое среди PHP-фреймворков (а не C, на котором написан исходный код Phalcon) — занимает CodeIgniter 3!

Конечно же, не стоит забывать, что каждому инструменту своё предназначение. Если вы выбираете небольшой и легкий фреймворк и собираетесь написать на нём что-то отличное от простейших приложений или REST API, то, скорее всего, вы столкнётесь с проблемами при расширении функционала. И наоборот — избыточность полнофункциональных, больших фреймворков повлечёт за собой финансовые издержки на содержание хостинга даже для элементарных приложений под большой нагрузкой.

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

Рефакторинг внутренних структур данных и добавление дополнительного этапа перед компиляцией кода в виде абстрактного синтаксического дерева — Abstract Syntax Tree (AST), — привели к превосходной производительности и более эффективному распределению памяти. Результаты сами по себе выглядят многообещающе: тесты, выполненные на реальных приложениях, показывают, что PHP 7 в среднем вдвое быстрее PHP 5.6, а также использует на 50% меньше памяти во время обработки запросов, что делает PHP 7 сильным соперником для компилятора HHVM JIT от Facebook.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *