Какой PHP-фреймворк выбрать для новичка

01 Июля (ред)

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

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

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

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

При создании фреймворка HLEB2 дополнительной задачей была его простота установки. Даже, если вы в дальнейшем собираетесь использовать какой-нибудь более сложный фреймворк, с чего-то надо начинать изучение фреймворков. Поэтому одной из причин, почему он подходит так-же и для новичков, является его простота установки. Непросто было соблюдать современные стандарты разработки фреймворков и требования к ним и в то-же время ограничиться стандартным набором расширений PHP и позволить скачивать и запускать приложение из простого архива. Это, конечно, альтернативный вариант, так как дополнительные расширения потом все равно понадобятся при усложнении проекта в ту или иную сторону, да и Composer пригодится, но установить HLEB2 и успешно запустить можно на базовой сборке PHP даже не зная тонкостей использования расширений PHP. Хорошо это или плохо? Это не добавляет препятствий для использования фреймворка профессионалом, но в то же время он будет комфортным и для новичков в программировании.

Читая эти доводы, вы, скорее всего, понимаете, что фреймворк HLEB2 на данный момент не может составить конкуренцию таким программным продуктам как Symfony и Laravel, поэтому пользователи любого уровня подготовки в нём приветствуются и возможно это единственный современный фреймворк на PHP, автор которого позаботился о простоте установки в полной мере.

Дело здесь не только в установке. Фреймворк снабжён описанием к каждому методу и эта документация к коду составляет почти 30% контента его кодовой базы. Напомню, что в IDE обычно упрощается поиск подсказок для метода и вариантов его использования. Например, для PHPStorm при наведении курсора появляется подсказка:

Также можно начать печатать добавление метода и IDE предложит автодополнение:

На такие моменты также было обращено внимание при разработке фреймворка HLEB2 (приведённые примеры взяты из него), чтобы сделать его максимально удобным и простым, избавив от лишней "магии" для более прозрачной работы. Конечно, другие фреймворки тоже в разной мере стараются быть удобными, но не у всех получается. В Yii2 описания к методам можно читать как техническую книгу, что можно назвать перебором, в Yii3 продолжат эту традицию, но, к сожалению (новичков), установить его теперь можно только через Composer, хотя раньше, в виде монолита, Yii2 устанавливался напрямую из репозитория помимо прочего.

Стоит уточнить, кто имеется ввиду под словом "новички" встречающимся в тексте выше. Конечно, самым лучшим советом (и таких советов очень много в Интернет) было бы изучить сначала PHP, а потом года через полтора практики взяться за один из фреймворков. Это правда, но в быстро меняющейся реальности нужен какой-нибудь MVP(минимально жизнеспособный продукт) для хобби-проекта или пробы идеи в течении одного-двух месяцев. Как ни странно, многие изучают PHP не ради самого языка программирования, а чтобы сделать сайт или чат-бота. Допускаю. что в таком случае фреймворк с минимальным порогом вхождения вполне их устроит. Нельзя упускать из поля зрения и просто новичков в программировании, которые узнали как запускается Docker, легко ставят из образа проект с фреймворком, но в самом фреймворке разобраться уже не могут. Им тоже стоит начать с чего-нибудь попроще, так как "порог вхождения" это не только про установку и развёртывание.

Может сложиться впечатление (чего и опасаются разработчики "элитных" фреймворков), что низкий "порог вхождения" будет восприниматься как низкий уровень экспертизы сообщества. Он не будет низким, а просто распределение количества профессионалов к начинающим будет естественным показателем. Жизнь такого сообщества основана не только на экспертах. Если пропустить подготовку и развитие новоприбывших, ставить им всяческие препятствия, то в конце концов действительно там останется несколько высококлассных специалистов, общий уровень вхождения будет недосягаем для большинства и пользоваться всяческим уважением, но и только.

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

Еще одна причина - простота документации. Иногда можно только по организации сайта/документации понять, на что направлен тот или иной проект и на чём заостряют внимание его создатели. В большинстве случаев основные разработчики фреймворка имеют отношение и к созданию/одобрению сайта. Попробуем посмотреть на некоторые веб-ресурсы* глазами новичка, который видит эти страницы впервые.

https://laravel.com/ - сайт фреймворка Laravel. Видно, что главное здесь - сообщество. Это наблюдается по всей заглавной странице ресурса, а в подвале ссылки на экосистему просто зашкаливают. По-видимому сам фреймворк на втором месте.

https://laravel.com/docs - документация Laravel. Сразу же перенаправляют новичков на отдельный ресурс https://bootcamp.laravel.com/, ну тут даже авторам очевидно, что оригинальная документация слишком сложна для начинающих. И что можно увидеть на первой странице этой документации для новоприбывших? Livewire, Blade, Tailwind CSS... и понеслось. Пользователь хотел только фреймворк поставить и попробовать, у него может и по PHP еще учебник не дочитан, а тут еще сумма технологий вдобавок и различные незнакомые слова. Однозначно будет отпугивать часть аудитории.

https://symfony.com/ - сайт программного продукта, это видно из оформления. Информация на заглавной странице посвящена раскрытию потенциала собственного ПО. Если так-же судить по ссылкам в подвале, раздел Сообщество среднего размера, а вот Блог (пропаганда и описание продукта) внушительных размеров. Если бы господин Фабиен в свое время не выкладывал в заголовке страниц политические лозунги - этот сайт можно было бы брать как пример для такого типа платформ.

https://symfony.com/doc/current/setup.html - страница установки фреймворка в документации. Явно перегружена дополнительными блоками. На самом виду информация, что Symfony CLI написан на Go, новичку это будет совсем непонятно, почему часть PHP-фреймворка написана на другом языке? По всей видимости у документации нет единого посыла и она просто обрастает подробностями то тут, то там. Иначе зачем в разделе Установка краткое описание создания собственных пакетов/рецептов?

https://www.yiiframework.com/ - сайт фреймворка Yii. Дизайн уже устарел, а на самом видном месте кнопка для донатов. Сайтом занимаются мало, можно судить об этом исходя также из факта, что для Yii3 менять дизайн сайта не планируется. Вывод можно сделать такой - не хватает рук и средств.

https://www.yiiframework.com/doc/guide/2.0/ru/start-installation - страница документации по первоначальной установке. Трудночитаемый набор блоков различной верстки. Но судя по их контексту, Yii2 действительно побывал в переделках и все эти рекомендации - следствие реальных случаев с продакшена, так что сомневаться в его применяемости не приходится. Однако новичка такая подача информации может повергнуть в уныние.

https://codeigniter.com/ - сайт фреймворка CodeIgniter. Это устаревший фреймворк, несмотря на то, что версия 4 была выпущена относительно недавно. Устарел сам подход к разработке, который в нём используется. Посмотрите на "преимущества", которые перечислены на главной странице, это всё 100% поддерживается современными фреймворками как данность.

https://codeigniter.com/user_guide/installation/index.html - ссылка на инструкцию по установке. Присутствует установка без Composer, не совсем мотивы раскрыты, но будем считать, что с точки зрения новичка это одно из благ. В целом создатели CodeIgniter пытаются представить его в трендах современной веб-разработки, но заметно отстают от них.

https://hleb2framework.ru/ru/2/0/installation - инструкция по установке в документации фреймворка HLEB2. Подача информации идёт по нарастающей. Чем дальше, тем больше технических подробностей. Для знакомства с фреймворком - основной раздел, для непосредственного использования в документацию добавлены дополнительные разделы, расширяющие основную информацию. Итоговое мнение пусть составит читатель этой статьи.

* - описание действительно на июль 2024 года.

fomiash fomiash + 215
Опубликовано в PHP фреймворк HLEB
Для ответа вы можете авторизоваться


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.