ferym
@ferym
Web-Developer

Какой PHP фреймворк посоветуете для быстрой разработки проекта?

Доброго времени суток!

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

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

- Представление о MVC имею. Раньше писал пару проектов на CodeIgniter, но на нём на мой взгляд мало что есть из коробки, и много времени уходит на разработку.

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

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

- Возможность работы с различными БД из коробки

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

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

- Защита от sql injection, xss и других дыр из коробки. В codeigniter по-моему были разные функции экранирования входных данных для SQL запросов (своя обёртка дополняемая mysql_real_escape_string) и для POST данных перед выводом. Думаю в других фреймворках это должно тоже быть, но огромным плюсом будет если реализована какая нибудь прокладка типа веб-фаервола в цепочке Запрос -> Проверка фаерволом -> Исполнение. Дополнительная защита не помешает, но это не обязательно.

- Проект будет ориентировочно крутиться на nginx+php5-fpm. Думаю практически все фреймворки смогут работать в этой среде, но вдруг...

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

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

Большое спасибо за время уделенное прочтению моего вопроса, и огромное спасибо за Ваши ответы.
  • Вопрос задан
  • 2050 просмотров
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
- Представление о MVC имею. Раньше писал пару проектов на CodeIgniter, но на нём на мой взгляд мало что есть из коробки, и много времени уходит на разработку.
С тех пор изобрели Composer, при должном желании прикручивается он и к CI в том числе :)

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

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

- Возможность работы с различными БД из коробки
Пока фреймворков без этой штуки не видел, но есть... Вы не поверите, Composer, что бы сменить/поставить "другой" ORM, если Вам "текущий" чем-то не подошел.

- Поддержка кэширования из коробки. И желательно что бы была поддержка некешируемых областей при генерации страницы, а сам кэш был управляемым.
То о чем Вы говорите, это: Varnish, Nginx+SSI и т.д. кэширование "из коробки" есть в Symfony (т.к. если его отключить, страницы может генерироваться феерически долго)

- Не тяжелый фреймворк, в котором оптимизирован код, и который не жрёт огромное количество ресурсов на сервере. Если будет поддержка PHP7 - тоже плюс.
По моему, любой современный фреймворк, если уже даже "Битрикс" небеизвестный до этого до этого дошел... некоторые фреймворки вообще скоро будут требовать PHP7, а не только "поддерживать".

- Проект будет ориентировочно крутиться на nginx+php5-fpm. Думаю практически все фреймворки смогут работать в этой среде, но вдруг...
Я пока таких "вдруг" не встречал. Если у админа голова и руки на месте - то никаких "вдруг" быть не должно. А вообще, у PHP версии 5.х, есть как минимум 3 основных "ветки", это <5.3, >=5.3 или 5.4+ и т.д., ещё кое-какие отличия были в 5.5 и 5.6, но не такие "разительные", подробности можно почитать в истории версий PHP. По этому, нужно конкретнее указывать версию, например, Laravel требует 5.6+

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

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

1. Yii2
2. CMS + готовые модули CMS
3. Вы не забыли, что есть... composer?!

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

Большое спасибо за время уделенное прочтению моего вопроса, и огромное спасибо за Ваши ответы.
Не за что! Кнопка "Мне нравиться" - сразу под сообщением :D
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
Symfony, Laravel.
Все как обычно и не надо столько текста писать.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Симфони. Огромное комьюнити, очень клёвая архитектура (хотя после CodeIgniter, с непривычки, может показаться переусложненной), множество готовых модулей для самых разных случаев и многие из таких модулей можно выдернуть из фреймворка и юзать отдельно.
Ответ написан
Комментировать
@entermix
Попробуйте Google Framework, ничего нового Вам не посоветуют.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
https://fatfreeframework.com
CHANGELOG

3.6.0 (19 November 2016)
* NEW: [cli] request type
* NEW: console-friendly CLI mode
* NEW: lexicon caching
* NEW: Silent operator skips startup error check (#125)
* NEW: DB\SQL->trans()
* NEW: custom config section parser, i.e. [conf > Foo::bar]
* NEW: support for cache tags in SQL
* NEW: custom FORMATS
* NEW: Mongo mapper fields whitelist
* NEW: WebSocket server
* NEW: Base->extend method (#158)
* NEW: Implement framework variable caching via config, i.e. FOO = "bar" | 3600
* NEW: Lightweight OAuth2 client
* NEW: SEED variable, configurable app-specific hashing prefix (#149, bcosca/fatfree#951, bcosca/fatfree#884, bcosca/fatfree#629)
* NEW: CLI variable
* NEW: Web->send, specify custom filename (#124)
* NEW: Web->send, added flushing flag (#131)
* NEW: Indexed route wildcards, now exposed in PARAMS['*']
* Changed: PHP 5.4 is now the minimum version requirement
* Changed: Prevent database wrappers from being cloned
......
Ответ написан
Комментировать
MetaDone
@MetaDone
Хорошо сформулированный вопрос - 50% решения
- Представление о MVC имею. Раньше писал пару проектов на CodeIgniter, но на нём на мой взгляд мало что есть из коробки, и много времени уходит на разработку.

в современном мире добавить что-либо к проекту можно через composer, даже собрать свой фреймворк из разных компонентов

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

Symfony - не пытался искать русскоязычную документацию, англоязычная шикарна
Laravel - русскоязычная вроде есть, англоязычная норм
Phalcon - хорошая русскоязычная
Zend - не пытался искать русскоязычную документацию, англоязычная норм

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

В laravel авторизация делается одной командой - php artisan make:auth, только ограничения доступа делать придется самому, но это во всех фреймворках

- Возможность работы с различными БД из коробки

Подключайте что хотите через composer

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

Смотрите Symfony, в последних версиях они прикрутили реверс-прокси, на мелких проектах норм, если разрастется - можно будет переехать на varnish

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

Phalcon, Symfony, Yii

- Защита от sql injection, xss и других дыр из коробки. В codeigniter по-моему были разные функции экранирования входных данных для SQL запросов (своя обёртка дополняемая mysql_real_escape_string) и для POST данных перед выводом. Думаю в других фреймворках это должно тоже быть, но огромным плюсом будет если реализована какая нибудь прокладка типа веб-фаервола в цепочке Запрос -> Проверка фаерволом -> Исполнение. Дополнительная защита не помешает, но это не обязательно.

В orm как правило это реализовано

- Проект будет ориентировочно крутиться на nginx+php5-fpm. Думаю практически все фреймворки смогут работать в этой среде, но вдруг...

Переезжайте на 7, активная поддержка 5 версии закончилась в конце прошлого года

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

Не зависит от фреймворка, как сами построите приложение - так оно и будет масштабироваться

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

Все это можно подключить через composer

В общем выбирайте, но исходя из того что проект для внутренних нужд - я бы порекомендовал Вам Laravel, правда по незнанию в нем можно жутко наговнокодить. Мой выбор в подобной ситуации - Symfony/Phalcon
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы