Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Знакомство с 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 BlogController

debug:router показывает все маршруты, команды make: создают заготовки классов.

Панель отладки

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

Частая ошибка

Корень сайта — папка public, а не папка проекта. Если направить веб-сервер на сам проект, посетители смогут открыть файл .env с паролями. На сервере всегда указывайте public как корневую папку.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.