Какой PHP-фреймворк выбрать: сравниваем Laravel, Symfony и Codeigniter

Какой PHP-фреймворк выбрать: сравниваем Laravel, Symfony и Codeigniter

Мы умеем делать приложения на чистом PHP, но часто используем для работы фреймворки. Решать задачи заказчика можно на любом фреймворке — главное, использовать его правильно. Выбрать способ работы помогут ответы на вопросы:

  • Какая функциональность поможет закрыть нужды проекта?
  • Будет ли фреймворк справляться, если проект вырастет?
  • Легко ли будет интегрировать функциональность подрядчиков в проект на этом фреймворке? Например, банковское ПО для проектов в ритейле.
  • Сколько будет стоить поддерживать проект, написанный на этом фреймворке: легко ли найти разработчиков, нужна ли лицензия для использования?
  • Есть ли развивающееся сообщество, чтобы задавать вопросы, если они возникнут?

Вы можете обратиться к нам за консультацией, и мы поможем разобраться, какой фреймворк подойдет вашему проекту. В статье разберем особенности Laravel, Symfony и CodeIgniter и расскажем, для каких проектов их используем.

Особенности PHP-фреймворков

Symfony, Laravel и Codeigniter подходят для создания сайтов — обеспечивают полный цикл разработки. У них открытый исходный код, который можно найти на Гитхабе, и развитые сообщества — если у разработчиков возникают вопросы, как поступить в той или иной ситуации, они быстро могут найти ответ.

В таблице рассмотрим особенности фреймворков.

ХарактеристикиSymfonyLaravelCodeigniter
ШаблонизаторыTwigBlade-
Модульность+--
Установка ComposerComposerComposer
Скорость разработкиБыстраяБыстраяСредняя
Базы данныхMicrosoft
MongoDB
My SQL
PostgreSQL
Redis
SQLite
Apache Jackrabbit
Couch DB
DynamoDB
GraphDB
MemBase
MemCacheD
Microsoft BI
MongoDB
No SQL
PostgreSQL
Oracle

Microsoft SQL
MongoDB
My SQL
Oracle
Windows ODBC Driver
PostgreSQL
SQLite2
Функциональность3 000 расширений9000 расширений2 500 расширений
ОсобенностиЕсть LTS-версии фреймворка

Широкая функциональность из коробки

Это самый стабильный фреймворк

Есть готовые компоненты
Поддержка юнит-тестирования из коробки


Позволяет дорабатывать систему под новые функции

Большинство функций можно переопределить и расширить благодаря классам

Работает с .po/.mo форматами файлов для локализации системы

В каких проектах применяем Symfony, Laravel и Codeigniter

ФреймворкПроектЗадачиРезультаты
LaravelСервис подбора автостраховокАнализ изменяющихся данных для подбора полиса

Хранение данных по заполненным полисам

Рассылка с напоминанием купить полис

Разные роли для работы в личном кабинете
16 000 личных кабинетов пользователей

1 600 полисов продают в день

CodeigniterКрупный контент-провайдерРабота с пользовательскими панелями

Взаимосвязь с базами данных

Поддержание работы сервиса на 30 языках

350 000 пользователей ежедневно

700 000 запросов в день

SymfonyСистема учетаИнтеграция с кассами, терминалами, штрихкодами

Оформление заказов

Хранение данных о клиентах и заказах

Обработка и подсчет статистики продаж
1 200 личных кабинетов пользователей

2,3 млрд запросов за год

Laravel для сервиса подбора автостраховок. Мы используем Laravel для сервиса подбора автостраховок: он сравнивает стоимость полисов в разных страховых и предлагает клиенту каско и ОСАГО по лучшей цене. В день продают до 4 тысяч полисов. Зарабатывают на комиссиях от страховых компаний.

Бизнес-задачи, которые помогает решать фреймворк:

  • Анализ данных для подбора полиса.
  • Хранение данных по заполненным полисам.
  • Рассылка с напоминанием купить полис.
  • Ограничивает доступ — создает разные роли для работы в личном кабинете.

Пример задачи на Laravel. Фреймворк оптимизирует написание новых маршрутов — сопоставляет программный код и URL.

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

Symfony для системы учета и контроля в цветочном бизнесе. Мы используем Symfony для системы учета в цветочном бизнесе: она помогает контролировать закупки, управлять продажами и закрывает вопросы работы с сотрудниками. В системе более 1 200 пользователей. Зарабатывает на подписках.

Бизнес-задачи, которые помогает решать фреймворк:

  • Интеграция с кассами, терминалами, штрихкодами.
  • Оформление заказов.
  • Хранение данных о клиентах и заказах.
  • Обработка и подсчет статистики продаж.

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

Пример установки и настройки дополнительного компонента для приложения:

код симфони
После установки зависимости команды следующей секции файла composer. json будут автоматически выполнены. Например, cache: clear — выполнить очистку файлового кеша приложения.

CodeIgniter для крупного контент-провайдера. Мы используем CodeIgniter для проектов крупного канадского контент-провайдера: он зарабатывает на комиссиях с показа рекламы. В системе более 350 тысяч пользователей, обрабатывает до 700 тысяч запросов в день.

Бизнес-задачи, которые помогает решать фреймворк:

  • Работа с пользовательскими панелями
  • Взаимосвязь с базами данных
  • Поддержание работы сервиса на 30 языках

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

В Codeigniter есть утилита phing: она формирует настройки системы в зависимости от окружения и исключает ошибку неправильного запуска. Например, можно создать несколько параметров окружений, где будут указаны адреса для подключения в БД, aerospike, redis. Выбором окружения можно быстро сформировать нужные файлы конфигурации на основе шаблона, вместо ручного прописывания всех данных.

код Codeigniter
Команда для создания баз данных вызывается из специального пакета «init» — действия, выполняемые на этапе инициализации системы. Название чисто символическое, для удобства.

В чем бы вы ни нуждались, мы можем помочь!

Расскажите нам, с какими проблемами вы сталкиваетесь в своем бизнесе. Мы с нетерпением ждем вашего ответа.

Получите ответ по смс

Ваше сообщение успешно отправлено!
Представьтесь пожалуйста
Укажите номер, на который придет ответ
Нажимая на кнопку, вы даете согласие
на обработку персональных данных.