PHP без фреймворка или Laravel: как выбрать для проекта
Выбор между чистым PHP и Laravel зависит от размера и срока жизни проекта. Для небольшого сайта, простой формы или узкой интеграции чистый PHP с несколькими хорошо организованными файлами даёт меньше лишнего кода и проще в размещении. Для приложения с кабинетами, ролями, очередями, API и командой разработчиков Laravel экономит месяцы работы и удерживает проект в порядке. Ниже критерии, по которым я принимаю решение.
Что значит «PHP без фреймворка» на самом деле
Фраза часто понимается как набор разрозненных скриптов с запросами в базу прямо в шаблонах. Это не то, что стоит выбирать. Грамотный «чистый» PHP это тоже архитектура, просто собранная из небольших частей вручную:
- единая точка входа (
index.php) и простой маршрутизатор; - разделение на слои: обработка запроса, бизнес-логика, доступ к данным, шаблоны;
- подготовленные запросы к базе через PDO;
- автозагрузка классов через Composer и стандарт PSR-4;
- конфигурация вне кода, секреты в переменных окружения;
- централизованная обработка ошибок и журналирование.
Такой подход я использую для проектов, где важны контроль над каждой частью, невысокие требования к хостингу и предсказуемость. Но дисциплина здесь обязательна: фреймворк навязывает структуру, а в чистом PHP её приходится удерживать самостоятельно.
Что даёт Laravel
Laravel это набор готовых решений для типовых задач веб-приложения. Из коробки вы получаете:
- маршрутизацию и контроллеры;
- ORM (Eloquent) и миграции схемы базы данных;
- аутентификацию, авторизацию, политики доступа;
- валидацию входных данных;
- очереди и планировщик задач;
- систему шаблонов Blade;
- консольные команды;
- механизмы тестирования;
- защиту от распространённых уязвимостей (CSRF, экранирование вывода в шаблонах, параметризованные запросы при использовании ORM).
Главная ценность в единообразии. Новый разработчик, знающий Laravel, быстро ориентируется в проекте, потому что структура ожидаемая. Для проектов, у которых будет несколько исполнителей и продолжительное развитие, это серьёзный довод. Именно по такому сценарию я рассматриваю платформы вроде медиасайтов и сервисов с кабинетами.
Критерии выбора: на что смотреть
Не существует правильного ответа вообще, есть правильный ответ для конкретной задачи. Я прохожу по таким вопросам.
- Масштаб функциональности. Пять страниц и форма обратной связи или десятки сущностей с правами и статусами?
- Срок жизни проекта. Одноразовый лендинг или система, которая будет развиваться несколько лет?
- Команда. Один разработчик или несколько, и кто будет поддерживать после сдачи?
- Нагрузка и производительность. Реально ли высокая нагрузка или это обычный сайт компании?
- Интеграции. Много ли внешних API, очередей, фоновых задач?
- Окружение. Позволяет ли хостинг запускать Composer, консольные команды, планировщик, очереди?
- Бюджет и сроки. Что важнее: быстрый запуск или долгая управляемость?
Если ответы склоняются к простоте, малому объёму и ограниченному хостингу, чистый PHP оправдан. Если к росту, команде и обилию функций, берите Laravel.
Сравнение по ключевым параметрам
Таблиц здесь нет, поэтому перечислю по пунктам.
Скорость старта. У Laravel много готового, первые функции собираются быстро, но есть время на изучение структуры и настройку окружения. В чистом PHP старт можно сделать быстрым только для очень простых задач, а чем больше функций, тем больше приходится писать вручную.
Контроль и размер кода. Чистый PHP не тащит лишнего, код проще профилировать и разбирать целиком. Laravel содержит много абстракций, и разработчику нужно понимать, что происходит «под капотом».
Безопасность. Фреймворк закрывает типовые ошибки по умолчанию, но не отменяет внимательности. В чистом PHP вы сами отвечаете за защиту от внедрения SQL, XSS, CSRF, безопасную загрузку файлов и сессии. Это выполнимо, но требует опыта и ревью. Если интересно, как защищать сайт на уровне заголовков, посмотрите материал про CSP, HSTS и другие заголовки безопасности.
Обновления. Laravel регулярно выпускает версии, и обновление между мажорными релизами требует работы. В чистом PHP обновляется язык и ваши зависимости, зависимостей обычно меньше.
Тестируемость. Во фреймворке тестирование встроено в экосистему. В чистом PHP тесты возможны, но структуру под них приходится готовить сами.
Требования к хостингу. Laravel удобнее на VPS или хостинге с доступом к консоли. Чистый PHP работает практически везде. О выборе площадки см. статью про хостинг для сайта бизнеса.
Пример: маршрут в обоих подходах
Чтобы почувствовать разницу, ниже простая страница, возвращающая данные. Это иллюстрация, а не готовый проект.
Чистый PHP с PDO:
<?php
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$stmt = $pdo->prepare('SELECT id, title FROM articles WHERE id = :id');
$stmt->execute(['id' => (int)($_GET['id'] ?? 0)]);
$article = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$article) {
http_response_code(404);
exit('Не найдено');
}
echo htmlspecialchars($article['title'], ENT_QUOTES, 'UTF-8');
Laravel:
// routes/web.php
Route::get('/articles/{article}', function (Article $article) {
return view('article', ['article' => $article]);
});
В Laravel поиск записи, ответ 404 и экранирование в шаблоне ({{ $article->title }}) решаются платформой. В чистом PHP каждый шаг виден и контролируется вами, но и ошибиться проще. На одном маршруте разница не критична, на сотне она заметна.
Когда я выбираю чистый PHP
Подход без фреймворка разумен, когда:
- проект небольшой и предсказуемый: сайт-визитка, каталог, калькулятор, простая админка;
- интеграция одна-две, например приём платежа или обмен с учётной системой, и важно минимум зависимостей;
- хостинг ограничен или нужно максимальное быстродействие при минимальных ресурсах;
- заказчику важна простота передачи и понимания кода;
- архитектура заранее ясна и не будет заметно разрастаться.
Для моих собственных платформ с небольшим числом специфичных функций это работает. Но я всегда фиксирую структуру проекта и стандарты кода, иначе через год он превращается в кашу.
Когда лучше брать Laravel
Фреймворк стоит выбирать, когда:
- в проекте личные кабинеты, роли, права, статусы, уведомления;
- будут очереди и фоновые задачи (рассылки, обработка файлов, повторные вызовы внешних API);
- планируется развитие силами нескольких разработчиков;
- нужен API для мобильного приложения или внешних систем;
- важны миграции базы, автоматические тесты, единый стиль;
- проект имеет шансы вырасти, и вы не хотите переписывать его с нуля.
Для проекта, где предстоит много разработки, затраты на изучение и настройку Laravel окупаются. Подробный состав работ по сайтам разобран в разделе про стоимость сайта.
Что обсудить с заказчиком до выбора технологии
Технический выбор должен опираться на бизнес-вопросы. Кто будет развивать сайт через год и два? Есть ли у заказчика своя команда или он планирует обращаться к разным подрядчикам? Нужны ли интеграции с учётными системами и платежами? Каковы ограничения по хостингу и бюджету поддержки? Ответы определяют не только фреймворк, но и объём документации, тестов и автоматизации выкладки. Если решение принято, зафиксируйте его вместе с причинами: через год это сэкономит время и споры.
Как не пожалеть о выбранном варианте
Чем бы вы ни пользовались, соблюдайте общие правила: версионирование кода, отдельные окружения для разработки и рабочего сайта, автоматическая проверка перед выкладкой, обновление зависимостей по графику и описание архитектуры хотя бы на одну страницу. Эти привычки влияют на судьбу проекта больше, чем выбор между фреймворком и его отсутствием. Хорошо организованный чистый PHP переживёт плохо организованный Laravel, и наоборот.
Частые вопросы
Правда ли, что Laravel медленнее чистого PHP?
В узких тестах да, из-за слоя абстракций. Для обычных сайтов и бизнес-приложений разница почти никогда не определяет успех, а узкие места находятся в базе данных, запросах и кэше. Оптимизация при необходимости делается кэшированием, очередями и настройкой окружения.
Можно ли начать на чистом PHP и перейти на Laravel позже?
Можно, но переход это фактически переписывание. Если вы видите вероятность роста, лучше выбрать фреймворк сразу или с самого начала писать чистый PHP по слоям, чтобы бизнес-логику можно было перенести.
Нужен ли фреймворк для безопасности?
Фреймворк снижает риск типовых ошибок, но не гарантирует безопасность. И с Laravel, и без него нужны ревью кода, обновление зависимостей, правильные настройки сервера и защита данных.
Какая версия PHP актуальна?
Выбирайте версию, которая ещё получает исправления безопасности. Актуальные сроки поддержки смотрите на официальном сайте PHP, а совместимость с вашими библиотеками и хостингом проверяйте перед стартом.
Если нужно выбрать технологию под вашу задачу или собрать сайт, посмотрите страницу про создание сайтов или обсудите проект со мной в Telegram.