Сайт о телевидении

Сайт о телевидении

» » Что такое фреймворк (framework)

Что такое фреймворк (framework)

1. За последние несколько лет количество фреймворков в мире веб-разработки резко выросло, причем за каждым из них стоит большое количество людей, которые убеждают, что это лучший инструмент в своей области. Как выбрать правильный и подходящий фреймворк или набор фреймворков на проект?

Александр Макарчук , qb
У каждого фреймворка есть огромное количество поклонников и противников. При выборе фреймворка необходимо учитывать несколько факторов. Во-первых, фреймворк должен иметь ровно столько возможностей, сколько необходимо проекту. Излишний функционал не нужен, но при этом никогда не должно возникать ограничений при доработке проекта. Во-вторых, время разработки сайта не должно увеличиваться за счет выбора того или иного фреймворка. В-третьих, фреймворк должен быть достаточно распространен, для того чтобы проект можно было передать другому разработчику. Наконец, безопасность фреймворка - один из важнейших показателей. Все фреймворки хороши, если находятся в правильных руках.

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

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

, ADV
Надо оценивать степень соответствия функционала «из коробки» требованиям проекта, а также горизонт применения данного решения (как скоро закончится готовый функционал). При этом необходимо оценивать экспертизу команды и наличие на рынке специалистов, которые работают с данным фреймворком. Обязательно надо обратить внимание, поддерживает ли решение обратную совместимость, если создатели фреймворка меняют от версии к версии все API тогда использовать его точно не стоит.

Александр Смирнов , Greensight
Выбрать из известного набора фреймворков несложно, так как при проектировании сразу видна потребность в тех или иных технологиях. Далее стоит вопрос увеличения известных фреймворков, но тут уже каждый по-своему подходит. Мне кажется, что стоит в первую очередь изучить фреймворки, которые охватывают разные технологии и наиболее отличаются друг от друга. Например, какой-нибудь классический MVC фреймворк и что-нибудь с другим подходом.

Алексей Федоров , «Одноклассники»
Как и с любыми инструментами, ответ сильно зависит от сроков проекта. Если проект короткий, берите или то, с чем можно быстро стартовать (например, Bootstrap), или то, что хотите изучить и с чем вы хотите «поковыряться». Если проект длинный, лучше собирать собственную библиотеку компонентов.

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

Александр Макарчук , qb
Зачастую встроенный готовый функционал позволяет собрать достаточно неплохую «коробку». При каком-либо отклонении приходится либо «костылить», либо «перепиливать» функционал. Тенденция будет усиливаться, так как время разработки - очень важный показатель. Но это приведет к тому, что в интернете будет появляться все больше и больше «кривых» сайтов.

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

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

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

Александр Смирнов , Greensight
Да, выбор технологического решения напрямую зависит от потребностей проекта, изученного техническим руководителем инструментария и его способности сопоставить одно с другим. Выбор языка - это скорее вопрос ресурсов: насколько легко найти разработчика в команду, если будет потребность ее расширения и т.п.

Алексей Федоров , «Одноклассники»
Языки и фреймворки, особенно на поздних стадиях развития, это ортогональные вещи. В развитых экосистемах фреймворки, как правило, имеют API для работы с несколькими языками и наоборот: языки с большой экосистемой имеют множество фреймворков, готовых для использования.

В современных условиях при старте проекта с нуля выбор фреймворка действительно часто стоит на первом месте, еще до выбора языка. Если же вам достался legacy-проект, то, как правило, большого выбора у вас нет и язык вам достается «в наследство».

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

3. Какие факторы дают гарантию надежности и стабильности фреймворка? Что позволит смело использовать инструмент на продакшне?

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

Александр Макаров , Yii
Наличие стабильных релизов, большое количество пользователей, наличие автоматизированных тестов, наличие активности, open source.

Алексей Персианов, Михаил Парфенюк , ADV
Поддержка фреймворка, его совместимость с предыдущими версиями и комьюнити.

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

Алексей Федоров , «Одноклассники»
Во-первых, это open source, то есть открытый код. Это некоторая гарантия того, что если у вас что-то сломается в продакшне, вы сможете починить это своими руками. Во-вторых, вендор. Вендор языка или фреймворка может давать вам те или иные гарантии, часто подкрепленные контрактом. В-третьих, обратная совместимость. На практике это выливается в использование правильных версий языков и библиотек. Не стоит тащить в ваш продакшн библиотеку версии 0.7: как правило, если у языка или фреймворка версия ниже, чем 1.0, то нет никаких гарантий обратной совместимости.

4. Каково направление развития фреймворков, как они будут изменяться в дальнейшем?

Александр Макарчук , qb
Как ни прескорбно, но, на мой взгляд, фреймворки будут двигаться по пути «облегчения» разработки. Типовые решения, готовые модули и прочее - все для того, чтобы неподготовленный человек смог развернуть сайт.

Алексей Зубань , Wow
Для многих популярных платформ период наращивания функциональности прошел. Сейчас развитие сфокусировано на увеличении быстродействия. Это справедливо и для frontend-, и для backend-фреймворков. В качестве частного решения может служить разбивка фреймворка на логические модули. Для проекта должен собираться комплект библиотек, решающих только необходимые задачи. А также ожидаю решений, все плотнее связывающих клиентскую и серверную часть, фреймворков с единым синтаксисом и логикой работы с контентом.

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

Александр Смирнов , Greensight
Каждый фреймворк развивается по-своему, но основные изменения касаются закрытия его слабых мест и упрощения процесса разработки и поддержки.

Алексей Федоров , «Одноклассники»
Упрощение или, говоря более строго, коммодитизация. Фреймворки становятся все сложнее и навороченнее внутри, но все проще для пользователя. Такое упрощение - отличный способ для авторов снизить порог входа в их разработку с тем, чтобы увлечь своим языком или фреймворком как можно больше пользователей.

5. Какие еще фреймворки могут появиться? Какие области еще не закрыты и ждут появления своего удобного инструмента?

Александр Макаров , Yii
Абсолютно любые. Всегда можно сделать лучше.

Алексей Персианов, Михаил Парфенюк , ADV
Не хочу «суфлировать» разработчикам готового ПО. Таких областей масса, но надо оценивать их емкость. Очевидно, емкие ниши уже протаптываются, а остальные пока потенциальных поставщиков не привлекают.

Александр Смирнов , Greensight
Развитие фреймворков зависит от потребностей рынка и возможностей браузеров и пользовательских девайсов. Развитие фреймворков напрямую зависит от развития и появления новых платформ: Canvas, WebGL, Node.js - как только появлялись эти технологии, в скором времени появлялись и фреймворки по работе с ними. Как только появляется новая технология, она сразу обрастает соответствующими фреймворками.

Алексей Федоров , «Одноклассники»
Сейчас идут активные разработки вокруг контейнеризации. Подобные продукты еще очень далеки от идеала, с ними много проблем, поэтому многие большие проекты разрабатывают собственные решения в этой области для работы с большими инфраструктурами.

6. Сейчас фреймворками называют довольно широкий набор решений и библиотек. Может ли это измениться, появится ли более конкретная терминология? В рейтинге мы разделили фреймворки на frontend и backend. Как еще можно типизировать все это множество фреймворков?

Александр Макарчук , qb
Можно, но необходимости в этом не вижу.

Александр Макаров , Yii
Терминология есть и давно. API-фреймворки, REST-фреймворки, фреймворки-грабберы, фреймворки для мобильной разработки, модульные сетки, адаптивные фреймворки, фреймворки для модульной верстки. Перечислять можно бесконечно.

Алексей Персианов, Михаил Парфенюк , ADV
Да, фреймворками называют как «монстров», так и маленькие библиотеки с единственной функцией. В ближайшее время придет понимание, что такое фреймворк и библиотека, и появится четкое разделение. Что касается типизации, то на данный момент как раз и есть две ветки.

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

7. Использование фреймворков в работе - временная мода или необходимость? Какие существуют доводы «за» и «против» использования фреймворков?

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

Алексей Зубань , Wow
Фреймворки, не навязанные извне технологии. Большинство из них создается коллективно заинтересованным сообществом разработчиков. И они вполне успешно решают актуальные проблемы, стоящие перед разработчиками. Фреймворки - добро. Другое дело, если инструмент используется неправильно или в неподходящих условиях, но это не минус технологии, это вопрос образования разработчиков.

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

Алексей Персианов, Михаил Парфенюк , ADV
Использование фреймворков - это необходимость, которая ускоряет, стандартизирует и удешевляет разработку. Доводами «за» и «против» является распространенность фреймворка и его реальная необходимость проекту.

Александр Смирнов , Greensight
Использование фреймворков - это скорее неизбежность. Даже если вы решите писать приложение сложнее «Hello, world» с нуля, в результате все равно получится какой-нибудь фреймворк.

Алексей Федоров , «Одноклассники»
Использование готовых решений, с одной стороны, сильно ускоряет разработку и внедрение, а с другой - вносит в ваш проект чужой legacy-код с кучей своих багов и ограничений. Фреймворки - это слой, на котором работает ваше приложение. Под этим слоем лежит ваш рантайм, под ним - операционная система, а под ним - железо. И все это, заметьте - готовые решения. Я не вижу тренда ухода с готовых процессоров на процессоры собственной разработки или тренда перехода с готовых операционных систем на что-то самописное. И для фреймворков я такого тренда тоже не вижу.

8. Когда при разработке веб-проекта наступает уровень, после которого уже сложно и неперспективно для дальнейшего развития проекта использовать CMS и лучше писать проект на одном из фреймворков?

Александр Макарчук , qb
Выбирать платформу нужно на этапе проектирования, а не в какой-либо другой момент жизненного цикла проекта.

Алексей Зубань , Wow
Понятие CMS и фреймворка не конфликтуют между собой. CMS - это шаблонный интерфейс по управлению приложением. В основе CMS вполне могут быть использованы фреймворки. И решение о необходимости использования или создания такого интерфейса должно опираться на функциональность приложения. Нетиповые вещи сложнее реализовывать в шаблонных рамках. Большая гибкость фреймворков может быть полезна, когда над проектом работает несколько команд и/или необходимо внедрять системы непрерывной интеграции.

Александр Макаров , Yii
Никогда. Есть проекты, которые вписываются в CMS. Есть проекты, которые не вписываются в CMS. Инструмент надо выбирать по задаче, а не задачи подгонять под инструмент.

Алексей Персианов, Михаил Парфенюк , ADV
Когда становится понятно, что в обозримом плане развития проекта слишком много задач приходится писать практически с нуля.

Александр Смирнов , Greensight
Когда CMS не хватает гибкости и приходится ее ломать, чтобы реализовать задачу. Это же касается и фреймворков: при длительном развитии проекта не всегда хватает гибкости и приходится переходить на другое решение или переписывать ключевые его части.

Алексей Федоров , «Одноклассники»
Когда затраты на разработку и поддержку становятся слишком большими.

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

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

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

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

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


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

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

Для сравнения были выбраны следующие фреймворки:
  • slim-3.0
  • ci-3.0
  • lumen-5.1
  • yii-2.0
  • silex-1.3
  • fuel-1.8
  • phpixie-3.2
  • zf-2.5
  • zf-3.0
  • symfony-2.7
  • symfony-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (версия 7.0.0 - для РНР5.6 и версия 7.4 для РНР7.0 и выше)
  • ze-1.0
  • phalcon-3.0
Тестирование условно разделено на 4 вида:
  • производительность (throughput),
  • занимаемая память (memory),
  • время выполнения (exec time),
  • количество подключаемых файлов (included files).

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

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

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

Sudo sysctl -p

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

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

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

/output - директория, в которую добавляются логи после выполнения тестирования. Здесь находится по два файла для каждого протестированного файла: .ab.log - лог после работы утилиты ab, и.output - содержит информацию, которая была выведена на экран (обычно это 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/ вы можете установить какие-то отдельные фреймворки, задав их параметрами к команде. В некоторых случаях это удобно, но мы использовали первый подход.

После произведенной настройки фреймворков, мы запустили тестирование при помощи bash benchmark.sh .

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

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

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

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

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

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

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

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

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

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

php 5.6 php 7.0 php 7.1
phalcon-3.1.2 5058.00 5130.00 7535.00
ci-3.0 2943.55 4116.31 4998.05
slim-3.0 2074.59 3143.94 3681.00
yii-2.0 1256.31 2276.37 2664.61
silex-1.3 1401.92 2263.90 2576.22
lumen-5.1 1316.46 2384.24 2741.81
ze-1.0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
fuel-1.8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2.5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
symfony-2.7 360.03 873.40 989.57
symfony-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

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

PHP5.6:

PHP7.0:

PHP7.1:



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

Эта характеристика (в мегабайтах) отвечает за количество занимаемой фреймворком памяти при выполнении поставленной перед ним задачи. Чем меньше данное число, тем лучше для нас и для сервера:
php 5.6 php 7.0 php 7.1
phalcon-3.1.2 0.27 0.38 0.37
ci-3.0 0.42 0.38 0.38
slim-3.0 0.61 0.55 0.55
yii-2.0 1.31 0.91 0.91
silex-1.3 0.74 0.65 0.65
lumen-5.1 0.80 0.63 0.63
ze-1.0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
fuel-1.8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2.5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
symfony-2.7 3.11 1.41 1.42
symfony-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

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

PHP 5.6:

PHP 7.0:

PHP 7.1:

Сводная накопительная диаграмма (по фреймворкам):

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

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

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

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

php 5.6 php 7.0 php 7.1
phalcon-3.1.2 1.300 1.470 1.080
ci-3.0 0.996 0.818 1.007
slim-3.0 1.530 1.228 0.662
yii-2.0 1.478 1.410 1.639
silex-1.3 4.657 1.625 2.681
lumen-5.1 2.121 1.829 1.228
ze-1.0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
fuel-1.8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2.5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
symfony-2.7 6.529 3.902 2.384
symfony-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Сводная накопительная диаграмма (по фреймворкам):

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

Характеристика, отвечающая за количество подключаемых файлов, которые описаны в файле «точки входа» фреймворка. Понятно, что система тратит какое-то время на поиск и подключение. Следовательно, чем меньше файлов, тем быстрее будет осуществляться первый запуск приложения, так как обычно в последующие разы фреймворк работает с кэшем, что ускоряет работу:
phalcon-3.1.2 5
ci-3.0 26
slim-3.0 53
yii-2.0 46
silex-1.3 63
lumen-5.1 37
ze-1.0 68
phpixie-3.2 163
fuel-1.8 53
bluz-7.3.1 95
zf-2.5 222
zf-3.0 188
symfony-2.7 110
symfony-3.0 192
laravel-5.3 38
laravel-5.4 176


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

Php artisan optimize --force

В 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, получим вот такие «матрасы»:


Забавный факт : 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 5.6 на PHP 7.0 подарит вам ускорение в среднем на 44%.
  • переезд с PHP 7.0 на PHP 7.1 подарит вам ускорение ещё на 14%.

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


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

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

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

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 (mean)
Time per request: 2502.448 (mean, across all concurrent requests)
Transfer rate: 0.35 received

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

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

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 (mean)
Time per request: 1.532 (mean, across all concurrent requests)
Transfer rate: 648.83 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 должен выглядеть так:

Ab -H "Connection: close" -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

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 (mean)
Time per request: 0.280 (mean, across all concurrent requests)
Transfer rate: 693.69 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.

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

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

Путем использования PHP-фреймворков, разработчики смогут значительно сократить время разработки, избегая необходимости программировать с нуля. Без правильно обозначенного PHP-фреймворка трудно управлять кодом. РНР действует на основе MVC (модель-представление-контроллер), которая представляет собой архитектурный образец доступный на языках программирования, создавая мост между логикой предметной области и пользовательским интерфейсом. Задача логики предметной области является работа с возможностью управления обменом информацией между базой данных и пользовательским интерфейсом. Это упрощает весь процесс.

Вот список 42 лучших PHP-фреймворков, которые вы можете использовать в 2017 году.

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

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

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

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

Конечно, попадая в разряд мощных фреймворков, Cake PHP 3.0 является одним из самых важных PHP-фреймворков, которому доверяют разработчики. На протяжении многих лет он был обновлен импровизированными сессиями управления, усовершенствованиями на основе ORM и многое другое. Платформа также предлагает решения для создания автономных библиотек с бесконечной поддержкой повышения модульности.

Рассматриваемый, как full-stack фреймворк, эта структура PHP написана с использованием языков C и C++. Эти языки добавлены к фактору производительности Phalcon. Благодаря своим инновационным возможностям, Phalcon быстро стал одним из самых популярных фреймворков для создания веб-приложений.

Еще один выдающийся PHP-фреймворк. Абсолютно инновационный, безопасный и предлагающий гибкость фреймворк, в котором нуждаются кодеры для создания веб-приложений. На протяжении многих лет, Zend был использован в крупных корпоративных проектах. Будучи открытым программным обеспечением, этот фреймворк требует применения объектно-ориентированного кода для разработки веб-приложений. В сочетании с сильным механизмом стандартной библиотеки, Zend предлагает высокую производительность с реализацией MVC, подтверждая свой статус влиятельного и гибкого фреймворка.

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

Это легкий, маневренный, управляемый сообществом PHP 5.3+ фремворк, который опирается на лучшие идеи из других структур. Популярный как модель презентации, Fuel PHP пропитан дополнительными функциями между контроллерами. Это мощный, профессиональный и отзывчивый фреймворк PHP, который помогает создавать невероятные сайты.

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

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

Созданный, как облегченный фреймворк, Slim – это микро-фреймворк, который позволяет быстро создавать легкие и мощные веб-приложения. Он имеет надежный маршрутизатор, шаблон с изображениями, http-кэширование, флэш-сообщения, защищенные куки с AES-256 шифрованием, ведение журнала, обработка и отладка ошибок, а также несложные конфигурации.

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

Medoo - это самый легкий и легкоуправляемый PHP-фреймворк, используемый, чтобы ускорить процесс веб-разработки. Он занимает всего лишь 13kb пространства в одном файле. Этот фреймворк чрезвычайно прост в освоении и реализации, совместимый с различными SQL базами данных, такими как MySQL, SQLite и СУБД MSSQL, Maria DB, Oracle, Postgre SQL, Sybase и другие. Платформа предоставляется бесплатно по лицензии MIT. Medoo - это большое облегчение для тех разработчиков, которые не хотят запутаться в управлении сложными требованиями кодирования.

Дизайн фреймворка POP PHP весьма тяжелый, но простой в использовании с эффективным API. Он требует наличие PHP 5.3+ и сумел при этом сохранить свой минимализм и легкий характер. Хотя были добавлены многие новые функции, он по-прежнему может использоваться исключительно в качестве инструмента, или в качестве основы ваших приложений.

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

Будучи мощным и простым в использовании микро-фреймворком, Fat-free был создан Bong Cosca в 2009 году. Действительно, это один из самых легких фреймворков в весом меньше, чем 50 кб. Он был создан почти полностью на PHP с такими функциями, как URL-маршрутизатор, поддержка многоязычных приложений и двигатель кэш. Существует множество плагинов для обширной базы данных серверных операций, таких как MSSQL, MySQL, PostgreSQL, SQLite, Sybase, MongoDB, DB2, CouchDB и Flat File.

Продолжение следует…

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

Laravel

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

Последний пункт проявляется в следующих возможностях:

  1. Поддержка сторонних модулей, коих немалое количество, что значительно расширяет стандартные возможности фреймворка.
  2. Обратная маршрутизация, позволяющая вам не тратить время на обновление ссылок при работе - всё происходит автоматически.
  3. Шаблоны проектирования Eloquent ORM, что помогает в определении строгих отношений между объектами БД.
  4. Автоматическая загрузка классов. Это, с одной стороны, уменьшает объем кода из-за отсутствия необходимости писать include…, с другой стороны - неиспользуемые классы не подключаются со всеми вытекающими.
  5. Модульное тестирование - наличие большого числа тестов для предотвращения наслоения ошибок.
  6. Система управления версиями БД. Если вы предполагаете часто несущественно обновлять свой продукт - данная функция позволит вам не тратить время на однотипные записи.

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

CodeIgniter

Данный фреймворк, которому уже более 11 лет, снискал славу благодаря непритязательности относительно используемых ресурсов, простоте, удобству, огромному количеству документации, рассчитанной на разработчиков любого уровня, отсутствию ограничений. В свое время Laravel создавался именно как конкурент CodeIgniter, так что до недавнего времени это был всеобщий ориентир.

Несмотря на простоту, как у любого популярного фреймворка, у CodeIgniter также есть парочка полезных особенностей:

  1. Большая поддержка сообщества CodeIgniter Reactor, в том числе библиотеки, модули, шаблоны и документация.
  2. Шаблоны для работы с БД, которые очень похожи на синтаксис SQL.
  3. Возможность кэширования на стороне сервера.
  4. Использование менеджера пакетов для быстрого подключения библиотек из командной строки.

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

Symfony

Несмотря на то, что релиз третьей версии состоялся еще в 2015 году, именно вторая версия Symfony единолично удерживает 3-е место по популярности среди фреймворков. Причина здесь схожа c CodeIgniter - скорость работы и общая простота. Но чтобы это не шло в разрез с функциональностью, пользователю предлагается выбрать одну из 3 версий для профильной работы:

  1. Standard Edition - для знакомства и выполнения общих задач. На ней основан дистрибутив Hello World Edition, который содержит ровно один скрипт оптимизации для дальнейшего использования в бенчмарках.
  2. Symfony CMF - адаптация для разработчиков, работающих с CMS-системами.
  3. REST Edition - оптимизация для работы с REST-архитектурой (интернет-магазины, поисковые системы и т.д.).

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

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

Yii

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

Nette Framework

Пожалуй, наименее известный из топовых PHP-фреймворков, что удивительно на фоне его 13-летнего возраста и широких возможностей. Вот некоторые из них:

  1. Один из самых производительных PHP-фреймворков .
  2. Прекрасно подойдет для новичков, кривая обучения достаточно плавная.
  3. Мощные инструменты в помощь: Tracy - для отслеживания ошибок, Latte - быстрый и интуитивно понятный генератор шаблонов, Tester - утилита для качественного тестирования вашего приложения в приближенных к реальным условиям.
  4. Возможность коллективной работы нескольких разработчиков над одним проектом.
  5. Прекрасная документация и дружелюбное сообщество (и не только на чешском языке).

В общем, если вы еще не попробовали Nette - рекомендуем, если нашли какие-то недостатки - обязательно пишите в комментариях.

Короткой строкой

CakePHP - популярный клон Ruby on Rails, только ориентированный на PHP. Все преимущества также схожи.

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

Phpixie - одной из главных «фишек» данного фреймворка является обновление. Больше не надо ждать несколько месяцев новую ревизию. Обнаружили -> подгрузили исправление -> работаете дальше. Принцип примерно такой.

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

Slim - этот фреймворк простой для изучения и начала работы с PHP, но практически не востребован во взрослом профессиональном мире веба.

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

PHP - наиболее популярный в мире серверный скриптовый язык. Он прошел большой путь развития от небольших, встраиваемых в код статических HTML страниц, снипетов, до современного языка, на котором разрабатывается большинство современных динамических сайтов.

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

Зачем использовать фреймворк
Но прежде чем приступить к обзору 10 фреймворков, которые мы тщательно отобрали и заботливо проанализировали для Вас, давайте поясним, для чего же они собственно нужны и какая от них польза.
Все дело в том, что использование фреймворков:
  • Существенно сокращает сроки разработки
  • Позволяет писать хорошо структурированный, хорошо документированный и повторно используемый код
  • Позволяет создавать масштабируемые, легко расширяемые приложения
  • Скрывает от разработчика необходимость заботиться о низкоуровневой безопасности сайта
  • Стимулирует следовать проектирования MVC (Модель-Представление-Контроллер), позволяющему разделить логику приложения и представление данных
  • Способствует применению современных методов программирования, в первую очередь объектно-ориентированного.

Laravel

Несмотря на свою молодость (первый релиз вышел в 2011 году), это уже совершенно зрелый продукт, и, согласно опросу, проведенному порталом SitePoint, он занимает первое место по популярности среди разработчиков на PHP.

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

В своих проектах мы регулярно используем именно Laravel. Огромным плюсом является то, что существует , где переведена практически вся техническая документация.

Symfony

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

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

CodeIgniter

Легковесный фреймворк с давней историей (первый релиз вышел в 2006 году). Традиционной его особенностью является исключительно легкий и быстрый процесс установки, и практически полное отсутствие необходимости в конфигурации. Это идеальный выбор, если хотите избежать конфликтов с версиями, поскольку работает практически на всех доступных платформах (в настоящее время требует только PHP 5.2.4)

CodeIgniter не в полной мере следует парадигме MVC - если уровень Контроллер является обязательным, то уровни Модели и Представления опциональны. Разработчик может использовать собственные правила кодирования и соглашения об именах, что, несомненно, предоставляет ему большую свободу. Ядро фреймворка имеет незначительный объем (около 2Мб), но функциональность можно расширить за счет плагинов от других разработчиков.

Yii 2

Yii 2 активно использует концепцию «ленивой» (или «отложенной») загрузки, что делает его одним из наиболее быстрых PHP фреймворков . Использует объектно-ориентированный подход и концепцию DRY (Don’t Repeat Yourself - Не Повторяйся) и позволяет создавать ясный и легко читаемый код.

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

Phalcon

Этот фреймворк впервые появился в 2012 году и быстро приобрел популярность среди разработчиков. Он достигает высочайшего быстродействия за счет того, что написан на С/С++ , что и нашло отражение в его названии (Phalcon созвучно англ. falcon - сокол). Однако не беспокойтесь - Вам не придется погружаться в С/С++, поскольку вся функциональность реализована в виде PHP классов .

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

CakePHP

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

На домашней странице проекта представлено внушительное портфолио этого фреймворка - с его помощью созданы сайты таких крупных корпораций, как BMW, Hyundai и Express. Это отличный инструмент для разработки приложений, во главу угла которых ставится безопасность. Проверка вводимых данных, защита от внедрения SQL кода, межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) - все это присутствует в CakePHP

Zend Framework

Zend - это мощный и стабильный PHP фреймворк, обладающий богатыми возможностями настройки, поэтому он, как правило, не рекомендуется для небольших проектов. Партнерами Zend являются такие гранды компьютерной индустрии, как IBM, Microsoft, Google и Adobe. Грядущий релиз Zend Framework под номером 3 будет оптимизирован для PHP 7, однако сохранит поддержку PHP 5.5.

Впрочем и текущий релиз Zend Framework 2 имеет множество замечательных функций, таких как инструменты для шифрования, удобный редактор, поддерживающий drug and drop и front-end технологии (HTML, JavaScript), полноценный online дебагер, модули для тестирования и подключения к базам данных. Zend Framework создавался с учетом методологии разработки Agile и предназначен для разработки высококачественных приложений корпоративного уровня.

Slim

Slim - PHP микрофреймворк, созданный по принципу «в нем есть все, что Вам нужно. Если в нем чего-то нет, то Вам это не нужно». Минималистический фреймворк, хорошо подходит для создания небольших приложений, для которых использование полноценного фреймворка было бы излишеством. На его создание автора вдохновил написанный на Ruby фреймворк Sinatra.

Slim широко используется разработчиками для создания RESTful API и сервисов. Он обладает такими функциями, как URL маршрутизация, управление кэшем на стороне клиента, шифрование cookies и сессий и поддержкой «flash» сообщений через HTTP-запрос. Slim снабжен прекрасной документацией, а в грядущий третий релиз Slim добавлены новые функции.

FuelPHP

FuelPHP - гибкий и многофункциональный PHP фреймворк, поддерживающий парадигму HMVC (Hierarchical Model-View-Controller), представляющую собой дальнейшее развитие модели MVC. Она имеет дополнительный класс Presenter (ранее называемый ViewModel), связывающий классы Controller и View, и отвечающий за логику, необходимую для генерации View.

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

PHPixie

PHPixie - относительно новый высокопроизводительный фреймворк, разрабатываемый с 2012 года и предназначенный для создания простых веб-сайтов. Как и FuelPHP, PHPixie следует парадигме HMVC и построен с помощью независимых компонентов, которые, к тому же, могут самостоятельно использоваться вне фреймворка.

На официальном веб-сайте можно найти обучающий курс, который, по заявлениям разработчиков, позволит освоить PHPixie всего за 30 минут. Среди других компонентов фреймворка следует отметить собственную ORM (object-relational mapping), механизм кэширования, валидатор вводимых данных, систему авторизации, встроенный язык разметки HAML и замечательный модуль маршрутизации.