Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.4K subscribers
1.3K photos
17 videos
26 files
3.98K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
加入频道
#symfony

Скрытые возможности Symfony.
👍2
#symfony

Основная беда Symfony – она предоставляет богатые возможности для решения многочисленных сложных проблем, но с помощью нее сложно решать простые задачи. Например, возьмем миддлвары. Достаточно простой и удобный механизм, упрощающий написание http-обработчиков. Для миддлвар даже придумали стандарт в php-fig.

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

В Laravel, например, есть миддлвары, хоть и не следующие стандарту psr-15. Можно ли такое сделать в Symfony? Оказывается, можно. Есть такой пакет, который реализует psr-15 и дает возможность использовать как глобальные миддлвары, так и миддлвары конкретно для контроллера.

Следование стандарту позволяет вам поставить любую известную вам миддлвару и использовать ее вместе с этим пакетом. Он (пакет) перехватывает событие ControllerArgumentsEvent, на этапе которого уже известен и контроллер, и его аргументы. Пакет проверяет, нужно ли запускать какие-то миддлвары – глобальыне и/или локальные – и запускает их до выполнения контроллера.

Преимущества по сравнению с событиями:
- Следование стандарту psr-15;
- Возможность объединять миддлвары в группы;
- Возможность точечно поставить миддлвары над конкретным контроллером;
- Возможность из коробки запускать миддлвары в зависимости от условия (например, в дебаг режиме запустить миддлвару, включающую логирование sql запросов, а в прод режиме – не запускать).

Также автор собирается добавить поддержку аргументов в миддлварах, чтобы можно было динамически указывать специфические для каждого из контроллеров аргументы.
👍13🔥5💩32
#symfony

В последних обновлениях Symfony (6.0.3 и 5.4.3) настройка, включающая CSRF защиту, оказалась по умолчанию выключена, если не была включена явно. Обновляйте фреймворк до последних версий — 6.0.4 и 5.4.4 —, так как ваша версия может быть уязвимой для CSRF атак.

https://symfony.com/blog/cve-2022-xxxx-csrf-token-missing-in-forms