Знакомство с Symfony
Symfony — фреймворк для проектов, которые живут годами: интернет-магазинов, корпоративных систем, API. Он состоит из независимых компонентов, и многие из них работают внутри других проектов — в том числе в Laravel. Symfony строже Laravel: больше явных типов и настроек, меньше «магии».
Создание проекта
Нужны PHP 8.2 или новее и Composer:
composer create-project symfony/skeleton blog
cd blog
composer require webappПервая команда создаёт минимальный проект, composer require webapp добавляет всё для обычного сайта: шаблоны, формы, работу с базой данных, безопасность.
Запуск
php -S localhost:8000 -t publicОткройте http://localhost:8000 — появится приветственная страница Symfony. Если установлена программа Symfony CLI, сервер запускают командой symfony server:start.
Структура проекта
| Папка | Что в ней |
|---|---|
src/Controller | Контроллеры — обработчики запросов |
src/Entity | Сущности — классы данных |
templates | Шаблоны Twig |
config | Настройки |
public | Корень сайта: index.php, картинки |
var | Кеш и журнал |
migrations | Изменения структуры базы данных |
Файл .env хранит значения, зависящие от окружения: адрес базы данных, режим работы.
Первая страница
Контроллер — класс, метод которого получает запрос и возвращает ответ. Адрес задаёт атрибут #[Route]:
// src/Controller/HomeController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class HomeController
{
#[Route('/')]
public function index(): Response
{
return new Response('<h1>Привет, Symfony!</h1>');
}
}Сохраните файл и обновите страницу. Ничего регистрировать не нужно: Symfony сам находит классы в папке src.
Консоль
Команда bin/console — главный инструмент разработчика:
php bin/console list
php bin/console debug:router
php bin/console make:controller BlogControllerdebug:router показывает все маршруты, команды make: создают заготовки классов.
Панель отладки
В режиме разработки внизу каждой страницы есть панель: время ответа, запросы к базе данных, маршрут, журнал. Щелчок по ней открывает профилировщик с подробностями запроса. Это первое место, куда смотрят, когда что-то работает не так.
Частая ошибка
Корень сайта — папка public, а не папка проекта. Если направить веб-сервер на сам проект, посетители смогут открыть файл .env с паролями. На сервере всегда указывайте public как корневую папку.