Nette Documentation Preview

syntax
Обновление
**********


Обновление до версии 3.4
========================

Минимально требуемая версия PHP - 8.3.

- метод `Request::isSameSite()` объявлен устаревшим в пользу `isFrom()`, который определяет источник запроса по заголовкам `Sec-Fetch-*`. Автоматическая защита форм и сигналов становится точнее, и одно поведение меняется: прямой переход (закладка, вручную введённый адрес, ссылка в письме) больше не считается same-site. Если сигнал полагается на ссылки-действия в письмах, пометьте его атрибутом `#[Requires(sameOrigin: false)]`.
- cookie `_nss` теперь отправляется только браузерам, которые не отправляют заголовок `Sec-Fetch-Site`
- `setCookie()` отправляет атрибут `Max-Age` и принудительно ставит флаг `Secure` для `SameSite=None` и для секционированных cookie
- перечисление `SameSite` заменяет константы `IResponse::SameSiteLax` и им подобные, которые объявлены устаревшими
- срок действия везде истолковывается одинаково: число - это относительное количество секунд, строка - интервал или дата. Передача абсолютной временной метки UNIX объявлена устаревшей, а сессионную cookie обозначает `null` вместо `0`.
- устаревший метод `Request::getRemoteHost()` возвращает `null`
- давно устаревший класс `Nette\Http\UserStorage` был удалён

Вся история перехода на заголовки `Sec-Fetch-*` рассказана в статье [Четверть века CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Обновление до версии 3.2
========================

- учётные данные из HTTP Basic Authentication больше не входят в объект `Url`, поэтому `$url->getUser()` и `$url->getPassword()` возвращают пустую строку. Считывайте их новым методом `$request->getBasicCredentials()`.

Причины этого изменения объясняются в статье [Nette Http 3.2: изменение доступа к учётным данным |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].


Обновление до версии 3.1
========================

- cookie отправляются с флагом `sameSite: Lax`
- `cookieSecure` теперь по умолчанию равен 'auto'
- параметр `session.cookieSecure` объявлен устаревшим, вместо него используется `http.cookieSecure`
- cookie `nette-samesite` переименована в `_nss`
- `Nette\Http\Request::getFile()` принимает массив ключей и возвращает `FileUpload|null`
- `Nette\Http\Session::getCookieParameters()` объявлен устаревшим
- `Nette\Http\FileUpload::getName()` переименован в `getUntrustedName()`
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` и `getRelativeUrl()` объявлены устаревшими (эти методы входят в `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` объявлен устаревшим
- `Nette\Http\FileUpload::getImageSize()` возвращает пару `[width, height]`
- при `autoStart: smart` (по умолчанию) сессия больше не запускается сразу после старта приложения только потому, что браузер отправил сессионную cookie; она запускается при первом чтении или записи. Добавлены значения `always` и `never`.
- когда браузер отправляет ID сессии, для которого сессии не существует, Nette удаляет cookie вместо создания новой сессии
- для доступа к секциям сессии предпочитайте методы `set()`, `get()` и `remove()`; в отличие от обращения через свойства они правильно различают чтение и запись и не запускают сессию без надобности
- значения по умолчанию для `cookiePath` и `cookieDomain` можно задать в конфигурации

Поведение сессий подробно описано в статье [Nette Http 3.1: намного умнее сессии |https://blog.nette.org/en/nette-http-3-1-much-smarter-sessions].


Обновление до версии 3.0
========================

- объект `Nette\Http\UrlScript` (который возвращает, например, `Nette\Http\Request::getUrl()`) теперь неизменяем
- в `new Nette\Http\Url('abcd')` строка `abcd` представляет путь, а не домен; начиная с 3.0 `(new Nette\Http\Url('abcd'))->setScheme('http')` правильно порождает `http:abcd` вместо прежнего `http://abcd`

Обновление

Обновление до версии 3.4

Минимально требуемая версия PHP – 8.3.

Вся история перехода на заголовки Sec-Fetch-* рассказана в статье Четверть века CSRF.

Обновление до версии 3.2

Причины этого изменения объясняются в статье Nette Http 3.2: изменение доступа к учётным данным.

Обновление до версии 3.1

Поведение сессий подробно описано в статье Nette Http 3.1: намного умнее сессии.

Обновление до версии 3.0