Добавлен InputBag
Класс ParameterBag, определенный Symfony, похож на объектно-ориентированный массив, который хранит связанные значения и предоставляет такие методы, как get(), set(), has() и т. д. Symfony определяет специализированные классы ParameterBag для некоторых целей (например, FileBag для загруженных файлов. , ServerBag для заголовков HTTP и т. д.)
В Symfony 5.1 представили новый класс InputBag (который является наследником ParameterBag) для управления значениями, предоставляемыми пользователем (через суперглобальные переменные $_GET, $_POST, $_REQUEST и $_COOKIE).
Зашифрованные данные сеанса
Шифрование данных — один из рекомендуемых способов минимизировать ущерб, причиненный утечками безопасности. В Symfony 5.1 вы можете зашифровать содержимое сессии с помощью нового MarshallingSessionHandler, который, в свою очередь, использует маршаллер из компонента Cache.
Используйте следующую конфигурацию, чтобы определить данные, необходимые для шифрования сеансов:
Symfony\Component\Cache\Marshaller\SodiumMarshaller:
decorates: 'session.marshaller'
arguments:
- ['%env(file:resolve:SODIUM_DECRYPTION_FILE)%']
- '@.inner'
Поддержка всех директив HTTP Cache-Control
Symfony поддерживает наиболее часто используемые директивы HTTP Cache-control (etag, last_modified, max_age, public и т. д.). Однако не хватало некоторых из них, поэтому решили добавить поддержку всех директив управления кешем в Symfony 5.1:
etagimmutablelast_modifiedmax_agemust_revalidateno_cacheno_storeno_transformprivateproxy_revalidatepublics_maxage
Конструктор Cookie
Файлы cookie определяют множество параметров конфигурации. Вот почему именованный конструктор Cookie::create() определяет девять аргументов! В Symfony 5.1 представили несколько методов для превращения класса Cookie в объект создателя, если вы предпочитаете использовать его таким образом:
use Symfony\Component\HttpFoundation\Cookie;
// Before
$cookie = Cookie::create(
'foo', 'bar', new \DateTime('+1 year'), '/', '.myfoodomain.com', true, true
);
// After
$cookie = Cookie::create('foo')
->withValue('bar')
->withExpires(new \DateTime('+1 year'))
->withDomain('.myfoodomain.com')
->withSecure(true)
->withHttpOnly(true);
Каждый метод withXXX() возвращает новый экземпляр объекта Cookie, поэтому вы также можете использовать их для изменения некоторого параметра существующего объекта cookie для создания нового.