Перейти до вмісту

Мікрофреймворк на PHP: 4 вигоди для невеликих завдань

Мікрофреймворк на PHP: 4 вигоди для невеликих завдань

Внутрішній інструмент: три ролі, сорок екранів, одна база, дедлайн у тижнях. Два кошториси різняться втричі, і обидва чесні. Різниця в тому, що лежить під застосунком, і мікрофреймворк на PHP часто пояснює меншу цифру.

Код: ATOM, ліцензія GPL-3.0.

Кожен пакет у дереві залежностей треба поставити, оновити, пропатчити й пояснити. На проєкті, що живе п’ять років, цей список стає рахунком, який приходить і після запуску.

Одна залежність замість тридцяти

composer require globus-studio/atom додає пакет і більше нічого: ні HTTP-фабрики, ні рідера анотацій, ні набору PSR-мостів. Рантайм тут це PHP 8.5 з PCRE в основі, а документація читається за один вечір.

Гроші йдуть не на завантаження. Вони йдуть на вікно оновлень: дерево з тридцяти пакетів раз на квартал видає то пораду з безпеки, то зламну зміну, і хтось має прочитати changelog, прогнати тести й ухвалити рішення. З однією залежністю та сама робота займає годину.

Кількість маршрутів перестає впливати на ціну запиту

Більшість невеликих фреймворків перебирає маршрути циклом: порівняв, не підійшло, порівняв знову. Сорок маршрутів це терпить. Чотириста дають помітний податок на кожен запит, і податок зростає разом із таблицею.

ATOM компілює всю таблицю в один шаблон PCRE і диспетчеризує одним preg_match. Десять тисяч маршрутів усе одно коштують одного порівняння на запит. Для внутрішнього API, що росте, це ємність, яку не треба купувати потужнішим сервером.

Те, що інакше збираєш частинами

Готові частини це друга причина, чому кошторис менший: валідація на 18 правилах-атрибутах, шаблони з успадкуванням і блоками, сесії з ротацією CSRF, CORS, завантаження файлів, обгортка над PDO, логер із ротацією, файловий і масивний кеш, ORM зі зв’язками та CLI.

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

Код лишається читабельним після передачі

728 тестів, 1108 тверджень, покриття рядків 85,29 %, PHPStan рівня 5. Числа не доводять якість, зате роблять проєкт передаваним: наступний розробник запускає composer test і отримує відповідь, а читання джерел займає день, не місяць.

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

Де мікрофреймворк на PHP закінчується

Міграцій немає, генератора адмінки немає. Корпоративна CMS, багатотенантний SaaS з матрицею прав і магазин із справжнім каталогом живуть у Laravel або WooCommerce, де ці задачі вже вирішені.

Інтернет-магазин на ATOM технічно можливий із самописним кошиком, і README каже про це прямо. Це привід подивитися на WooCommerce, а не писати кошик з нуля.

Що мікрофреймворк на PHP змінює в бюджеті

Ставки не рухаються. Розробка на PHP на українському ринку коштує 30–50 $ за годину, MVP на Laravel починається приблизно з 8 000 $. Рухається кількість годин: менше збирання, коротші вікна оновлення, швидший онбординг.

Тому вибір фреймворку видно в бюджеті підтримки, а не в колонці ліцензій. Безкоштовне ПЗ з важким деревом залежностей не дешевше за безкоштовне ПЗ без дерева.

Як обирати

Три питання вирішують справу. Чи потрібні продукту міграції та генератор адмінки? Чи команда більша за кодову базу? Чи за два роки його супроводжуватиме стороння людина?

Дві відповіді «так» ведуть до повного фреймворку. Одне «так» і два «ні» ведуть до того, що можна дочитати за день, і для такого випадку ATOM і писався.

Поруч: розробка на PHP про те, що стоїть навколо цього стеку, і веб-розробка про те, як рахується обсяг робіт. У сусідній статті розібрано інференс ШІ на PHP, коли тому самому сервісу треба відповідати моделлю.

Що почитати: нотатки про випуск PHP 8.5 і ATOM на Packagist.