Php framework сравнение. Веб-фреймворки: введение для новичков

Как мы все знаем, PHP является наиболее популярным и удобным языком программирования сценариев. Он делает процесс разработки гораздо проще и помогает сократить затраты и время. Именно поэтому PHP всегда в центре внимания языков программирования.

С появлением PHP создания, сложные веб-проекты (в PHP) с нуля стали бессмысленным решением. Чтобы как-то структурировать процесс разработки, были созданы фреймворки PHP.

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

Давайте рассмотрим подробнее каждый из них.

# 1 Laravel

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

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

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

# 2 Symfony

Этот фреймворк PHP состоит из нескольких компонентов. Он написан в рамках PHP5, который также использует MVC. Symfony предлагает быструю разработку и веб управление, которое помогает выполнять легко рутинные задачи веб-программирования. Одно из главных его преимуществ — несколько баз данных поддержки:

    базы данных MySQL;

    базы данных PostgreSQL;

    SQLite или любой другой ПДО-совместимых баз данных.

Symfony состоит из PHP-библиотек, которые могут быть повторно использованы и развернуты в различных задачах: создание форм, объектов и шаблонов конфигурации и аутентификации и т.д. Любой компонент может быть установлен с помощью «Композитора» — PHP менеджера пакетов.

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

# 3 Phalcon

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

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

# 4 CodeIgniter

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

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

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

# 5 Yii Framework

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

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

  • ActiveRecord для реляционных и NoSQL баз данных;

  • Многоуровневая поддержка кэширования.

Выбор механизмов здесь прост, поэтому структура будет удобна тем, кто ранее занимался разработкой внешнего интерфейса. Yii имеет Gii — генератор кода, который вносит свой вклад в объектно-ориентированную разработку, быстрого прототипирования, а также предлагает веб-интерфейс пользователя, где он может генерировать необходимый код.

# 6 Zend

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

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

# 7 CakePHP

CakePHP была написана 10 лет назад в рамках программирования PHP для создания веб-проектов, и до сих пор имеет активное и растущее сообщество. Как и большинство других структур, он реализует MVC шаблон. CakePHP изначально был создан как клон популярного Ruby On Rails, и многие из идей Cake были заимствованы из RoR. Тот факт, что CakePHP поддерживает не только PHP5, но и PHP4 отличает его от других конкурентов на рынке.

Прошло десять лет, но CakePHP все еще находится в топе. С ним легко научиться работать. Такое интегрированное приложение, как CRUD незаменимо при взаимодействии с базой данных. В последних релизах CakePHP 3.x улучшено управление сессиями, а также расширены возможности создания большего числа отдельных библиотек.

Среди проектов, реализованных в CakePHP, есть сайты BMW и Hyundai. Вы можете выбрать эту структуру, если ваши веб-приложения нуждаются высоком уровне защиты, поскольку CakePHP имеет такие большие возможности, как:

    Ввод проверки;

    Система защиты использует введенный SQL;

    Предотвращает межсайтовый скриптинг;

    Защищает от запроса межсайтовой подделки, и многое другое.

Лучшие PHP фреймворки. Итог

Сегодня мы попытались рассмотреть наиболее популярные PHP-фреймворки. Но как насчет лучшего? Какой из них является наиболее популярным фреймворком PHP? Каждая структура имеет свои плюсы и минусы. Но вы не найдете лучший, потому что они они хороши, пусть даже есть некоторые различия между ними. На самом деле, все зависит только от потребностей клиента. Единственное, что может сделать вас уверенным в конечном продукте развития компании. Не стесняйтесь нанять команду PHP-экспертов. Мы разрабатываем продукты для стартапов, для бизнес-компаний и т.д. На протяжении многих лет мы программировали десятки программных продуктов и завершили много успешных проектов. Если вы заинтересованы в PHP продуктов свяжитесь с нами для получения более подробной информации. [email protected]

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 и замечательный модуль маршрутизации.

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

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

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

Разработчики постоянно проводят сравнение фреймворков, чтобы прояснить для себя этот вопрос. Например, в статье 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, и уменьшенное количество используемой памяти.

Веб-разработка

Топ фреймворки для веб-разработки в 2018 году

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

Angular.JS

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

Его структура включает в себя целый ряд интересных функций. Вот некоторые из них:

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

Все эти функции являются частью платформы, которая позволит вам построить отличный веб-сайт. Вот лишь некоторые примеры площадок, разработанных с помощью этого фреймворка: Netflix, Freelancer.com, GoodFIlms и т.д.

Ruby on Rails

Этот фреймворк построен на известнейшем языке программирования Ruby. В чем его главная фишка? В том, что повторное использование кода радикально упрощает и ускоряет разработку веб-приложений. Кроме того, такой подход позволяет добавлять некоторые дополнительные функции. Среди популярных веб-сайтов, написанных на Ruby on Rails, можно выделить Basecamp, Ask.fm, GitHub, 500px и пр.

Ruby on Rails — это огромное сообщество разработчиков, где вы запросто найдете помощь для своего проекта. Мы не можем сказать, что RoR относится к дешевым технологиям. Однако фреймворк обеспечивает кучу плюшек. И прежде всего мы имеем в виду быструю разработку с меньшим количеством написанного кода и ошибок. Среди прочих преимуществ выделим:

  • Гибкость. Фреймворк подходит для всех отраслей бизнеса, будь то управление проектами или строительство.
  • Скорость. Об этом мы уже писали и повторим еще раз: Ruby on Rails сокращает время разработки веб-приложений примерно на 30-40%.
  • Возможность вносить изменения в код совершенно безболезненно. Именно поэтому RoR идеально подходит для долгоиграющих проектов. Резкое изменения требований или смена команды разработчиков — все это не станет серьезной проблемой.

YII

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

Ключевые особенности YII одной строкой:

  • Фреймворк не включает классы и объекты, пока они не понадобятся. Это ускоряет загрузку приложений.
  • Использование OOP стандартов, а значит — надежность и безопасность.
  • Все профессиональные ресурсы абсолютно бесплатны.

Все эти функции способствуют созданию высокопроизводительной структуры, которая позволит вам разрабатывать классные веб-сайты. Вот некоторые из них: ТАСС, Craftcms, HumHub и так далее.

Meteor JS

Этот фреймворк написан на платформе Node.js и позволяет разработчикам создавать различные real-time веб-приложения. Одна из самых крутых особенностей Meteor JS — отличная основа для создания простых сайтов личного пользования.

Meteor JS это изоморфный JavaScript веб-фреймворк с открытым исходным кодом. О чем это говорит? О том, что он позволяет загружать страницы намного быстрее. Кроме того, благодаря интегрированному стеку JavaScript, который простирается от базы данных до экрана конечного пользователя, вы можете выполнить в 10 строках кода то, что обычно растягивается на 1000 строк.

Еще одна интересная особенность заключается в том, что вы можете использовать один и тот же код при разработке под iOS, web, Android или desktop. Также вы можете использовать различные популярные фреймворки и инструменты и сосредоточиться на создании функций вместо того, чтобы писать разрозненные компоненты вместе.

Express.js

И еще один фреймворк на платформе Node.js. Вам определенно стоит им воспользоваться, если вы хотите разработать веб-приложение и API, как можно быстрее. Почему? Потому что Express.js покрывает целый ряд важных функций плагинами. А еще фреймворк можно использовать для создания мобильных приложений.

По сути, Express.js состоит из Angular и базы данных MongoDB. Это значит, что для разработки веб-сайтов вам достаточно знания HTML, CSS и JavaScript. А используя модули npm, вы сможете расширять функционал приложений сколько угодно и как угодно.

Express.js идеален для создания простых веб-сервисов. Не высоконагруженных порталов, а приложений, которые собираются “на скорую руку”. Если вам нужен MVP или вы просто хотите попрактиковаться в веб-разработке, хватайтесь за Express.js и никуда его не отпускайте.

Zend

Zend — это opensource фреймворк, написанный на PHP. Он ориентирован на разработку современных, надежных и безопасных веб-сервисов.

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

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

Django

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

  • Скорость. Главная цель фреймворка — помочь разработчикам сделать приложение, как можно быстрее. Причем, на всех этапах производства — от идеи до релиза. Эффективность и экономичность — именно так можно сформулировать девиз Django. Фреймворк идеально подходящит для разработчиков, у которых горят сроки.
  • Безопасность. Вы даже можете позволить себе некоторые ошибки, связанные с секьюрностью. Как правило, они связаны с SQL инъекциями, подделкой межсайтовых запросов и межсайтовым скриптингом. Django эффективно управляет всеми именами пользователя и паролями, а система аутентификации пользователя, как известно, играет решающую роль.
  • Масштабируемость. Большинство бизнес-сайтов используют Django для быстрого удовлетворения потребностей трафика.
  • Полный фарш. Фреймворк включает в себя различные дополнительные опции для помощи с картами сайта, аутентификацией пользователей, администрированием контента, RSS-каналы и многое другое. Каждая из них оказывает существенную помощь в процесс веб-разработки.

Laravel

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

К основным преимуществам этого фреймворка можно отнести:

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

Вывод

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

Приветствую вас, мои постоянные читатели и случайные посетители сайт!

Сегодня наш разговор будет посвящён особенностям создания сайтов на фреймворке, а точнее, обзору плюсов и минусов frameworks как для разработчиков, так и для заказчиков.

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

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

Те, кто уже работал с фреймворками знают, каким образом это достигается.

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

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

Фреймворк, как вы могли убедиться, — это понятие универсальное, выходящее за рамки веб-программирования. У того же C++, оказывается, есть фреймворк – Juce. Однако, такого их количества, как в web, наверное, нет больше нигде.

Для одного только языка PHP их существует несколько десятков (всем известные Yii, Laravel, Symphony, CakePHP и др.). Также существуют фреймворки и для других языков, применяемых в web:

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

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

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

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

Поэтому, если вы увидите какие-то нестыковки приводимых аргументов с frameworks для других языков, не спешите раздражаться 🙂

На этом наш краткий ликбез завершён, и мы переходим к самой вкусной части статьи – к обзору их достоинств и недостатков.

5 плюсов и 3 минуса фреймворков для создания сайтов для разработчиков

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

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

1. Полная свобода творчества. Заключается в том, что создание веб-ресурса с помощью фреймворка – это написание его кода с нуля, а не пользование «тем, что дают», как в случае с CMS.

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

В CMS же, повторюсь, помимо указанных ограничений вы будете иметь дело с готовым кодом сайта, который бывает не всегда читабельным (сколько людей, столько и стилей кодирования)

2. Разработка заключается именно в написании нового функционала, а не в урезании имеющегося, как в случае с CMS.

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

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

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

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

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

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

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

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

4. HighLoad-адаптация. Честно говоря, даже не знаю, есть ли такой термин или нет 🙂 Просто захотелось описать одним словом огромный плюс фреймворков, который заключается в их относительно лёгкой (по сравнению с CMS) настройке под HighLoad (т.е. высокие нагрузки).

Реализован он наличием или поддержкой (есть все необходимые адаптеры и настройки) HighLoad-технологий (Memcached, Redis, Gearman) из коробки.

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

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

CMS – это всё-таки уровень мелких веб-студий, которые зарабатывают себе на жизнь штамповкой типовых сайтов. Исключение, пожалуй, составляют 1С-Битрикс и , которых уважают и боятся разработчики, способные стать базой для многофункциональных HighLoad-ресурсов.

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

По крайней мере, лично я их не нашёл так много, как плюсов frameworks.

1. Разработка отнимает много времени, т.к. большинство функционала придётся создавать самостоятельно с нуля. Даже банальные функции вроде корзины товаров и админки, которые доступны в CMS «из коробки», на фреймворк-базированном сайте придётся прописывать вручную.

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

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

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

2. Из-за свободы творчества разбираться с готовым кодом, написанным другим программистом, порой сложно. В этом плане CMS с их ограниченностью выигрывают, т.к. разработка в них ведётся по общему стандарту, прописанному в документации.

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

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

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

Так что решать вам 🙂

В качестве выводов относительно особенностей фреймворков для разработчика скажу, что если вы заботитесь о своём профессиональном и, как следствие, карьерном росте в IT-индустрии, то освоение frameworks должно стать неотъемлемой частью вашей деятельности.

Я ощутил это на себе: когда пытался найти работу, то во всех компаниях, способных платить серьёзную з/п, интересовались моими знаниями именно фреймворков, а не CMS. Про CMS спрашивали, в основном, владельцы мелких веб-студий.

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

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

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

Естественно, в веб-студиях больших денег мне не предлагали.

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

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

Так что на инвопрос «На чём быстрее создать сайт – на CMS или фреймворке?» очень сложно ответить, т.к. отключение лишних функций может по времени занять столько же, сколько разработать ресурс с нуля на framework.

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

Как-то так 🙂

Достоинства фреймворков и недостатки для заказчиков

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

В отличие от предыдущей точки зрения, заказчиком лично я не был. Зато я много с ними общался как при работе на фрилансе, так и через Project Manager-ов на постоянном месте работы.

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

Начнём традиционно с приятного, и поговорим о преимуществах PHP фреймворков для заказчиков .

1. С помощью фреймворка можно реализовать проект абсолютно любой сложности и с функционалом, каким только душа не пожелает.

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

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

На базе framework можно сделать абсолютно всё, что возможно реализовать с помощью кода (чтобы вы не подумали, что фреймворк – это ключ к решению всех мировых проблем). И точка!

2. Сайты на фрейморках более производительны, чем на CMS, т.к. в них присутствует только необходимый функционал.

Как уже и говорилось, фреймворки совсем не похожи на ЦМС, в которых по умолчанию напичкано множество функций и инструментов, порой совершенно не нужных.

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

При разработке сайтов на фреймворках такой проблемы нет – на сайтах установлен только нужный функционал, который при условии тщательного тестирования и оптимизации кода (тут уже всё на совести разработчика) даст сайту просто умопомрачительную производительность 🙂

3. HighLoad-адаптация, о которой я уже говорил, перечисляя особенности фреймворков для программистов.

Поскольку frameworks более гибки в HighLoad-настройке, чем те же CMS, то сделать сайт производительным при большой нагрузке в данном случае будет достаточно быстро и, следовательно, дешевле, чем «подпиливать» CMS или другие типы движков.

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

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

1. Разработка сайта занимает большое количество времени.

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

2. Следовательно, стоимость сайта, разработанного на базе фреймворка, будет больше аналогичного проекта, реализованного на CMS.

Хотя, правды ради, нужно сказать, что проект проекту рознь. Как уже говорилось, разработав Интернет-магазин на ЦМС вместо фреймворка, вы выиграете по времени, а, следовательно, и по деньгам.

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

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

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

Для того, чтобы установить в фреймворк пакет, для начала на хостинге нужно будет установить пакетный менеджер (Composer для PHP, Bower для JavaScript и CSS, npm для Node.js и т.д.), затем настроить его, научиться с ним работать, а только уже после всего этого найти и установить требуемый пакет.

Согласитесь, что данный способ расширения «слегка» усложняет работу с фрймворками простым смертным 🙂 И в данном моменте фреймворки существенно уступают CMS, где установка модулей и шаблонов занимает, от силы, 1 минуту.

4. Фреймворк – инструмент для профессионалов, следовательно, в тематических сообществах можете даже не пробовать создавать топики с названиями типа «Настройка корзины заказов» или «Как добавить новую категорию», которыми рябят форумы, посвящённые CMS.

В лучшем случае вам предоставят простыню кода, с которым придётся разбираться самостоятельно, или насоветуют кучу библиотек, с которыми вы не будете знать, что делать. В худшем — высмеют или вообще забанят 🙂

К чему эта куча букв? Да к тому, что самостоятельно добавить новую функцию на сайт, разработанный на базе фреймворка вам вряд ли удастся самостоятельно. Как выход из ситуации – придётся обращаться за помощью к профессиональным разработчикам, которые имеют опыт работы с требуемой платформой.

5. А услуги профессионалов — это, в свою очередь, — дополнительные расходы.

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

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

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

Вот такие они, эти PHP frameworks. Где-то выигрываем, а где-то теряем. В общем, как и везде.

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

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

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

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

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

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

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

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

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

Пишите свои отзывы в комментариях и делитесь статьёй со своими друзьями и единомышленниками в социальных сетях с помощью кнопок под статьёй.

Также не забывайте вступать в наше