Добавлен 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:
etag
immutable
last_modified
max_age
must_revalidate
no_cache
no_store
no_transform
private
proxy_revalidate
public
s_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 для создания нового.