Nette Documentation Preview

syntax
Aggiornamento
*************


Aggiornamento alla versione 3.4
===============================

La versione minima richiesta di PHP è la 8.3.

- il metodo `Request::isSameSite()` è deprecato a favore di `isFrom()`, che determina l'origine della richiesta dagli header `Sec-Fetch-*`. La protezione automatica dei form e dei segnali diventa più precisa e cambia un comportamento: la navigazione diretta (un segnalibro, un indirizzo digitato a mano, un link in una email) non è più considerata same-site. Se un segnale conta sui link di azione nelle email, contrassegnatelo con `#[Requires(sameOrigin: false)]`.
- il cookie `_nss` viene ora inviato solo ai browser che non inviano l'header `Sec-Fetch-Site`
- `setCookie()` invia l'attributo `Max-Age` e forza il flag `Secure` per `SameSite=None` e per i cookie partizionati
- l'enum `SameSite` sostituisce le costanti `IResponse::SameSiteLax` ecc., che sono deprecate
- la scadenza viene interpretata ovunque allo stesso modo: un numero è un numero relativo di secondi, una stringa è un intervallo o una data. Passare un timestamp UNIX assoluto è deprecato e il cookie di sessione si rappresenta con `null` invece che con `0`.
- il metodo deprecato `Request::getRemoteHost()` restituisce `null`
- la classe deprecata da tempo `Nette\Http\UserStorage` è stata rimossa

Tutta la storia del passaggio agli header `Sec-Fetch-*` è raccontata nell'articolo [Quarter Century of CSRF |https://blog.nette.org/en/quarter-century-of-csrf].


Aggiornamento alla versione 3.2
===============================

- le credenziali dell'HTTP Basic Authentication non fanno più parte dell'oggetto `Url`, quindi `$url->getUser()` e `$url->getPassword()` restituiscono una stringa vuota. Leggetele con il nuovo metodo `$request->getBasicCredentials()`.

I motivi di questo cambiamento sono spiegati nell'articolo [Nette Http 3.2: change access to credentials |https://blog.nette.org/en/nette-http-3-2-change-access-to-credentials].


Aggiornamento alla versione 3.1
===============================

- i cookie vengono inviati con il flag `sameSite: Lax`
- `cookieSecure` ha ora il valore predefinito 'auto'
- l'opzione `session.cookieSecure` è deprecata, al suo posto si usa `http.cookieSecure`
- il cookie `nette-samesite` è stato rinominato in `_nss`
- `Nette\Http\Request::getFile()` accetta un array di chiavi e restituisce `FileUpload|null`
- `Nette\Http\Session::getCookieParameters()` è deprecato
- `Nette\Http\FileUpload::getName()` è stato rinominato in `getUntrustedName()`
- `Nette\Http\Url`: `getBasePath()`, `getBaseUrl()` e `getRelativeUrl()` sono deprecati (questi metodi fanno parte di `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` è deprecato
- `Nette\Http\FileUpload::getImageSize()` restituisce la coppia `[larghezza, altezza]`
- con `autoStart: smart` (il valore predefinito) la sessione non viene più avviata subito dopo l'avvio dell'applicazione solo perché il browser ha inviato un cookie di sessione; si avvia alla prima lettura o scrittura. Sono stati aggiunti i valori `always` e `never`.
- quando il browser invia un ID di sessione per il quale non esiste alcuna sessione, Nette cancella il cookie invece di creare una nuova sessione
- per accedere alle sezioni della sessione preferite i metodi `set()`, `get()` e `remove()`; a differenza dell'accesso tramite proprietà distinguono correttamente la lettura dalla scrittura e non avviano la sessione inutilmente
- i valori predefiniti di `cookiePath` e `cookieDomain` si possono impostare nella configurazione

Il comportamento delle sessioni è descritto in dettaglio nell'articolo [Nette Http 3.1: much smarter sessions |https://blog.nette.org/en/nette-http-3-1-much-smarter-sessions].


Aggiornamento alla versione 3.0
===============================

- l'oggetto `Nette\Http\UrlScript` (restituito per esempio da `Nette\Http\Request::getUrl()`) è ora immutabile
- in `new Nette\Http\Url('abcd')` la stringa `abcd` rappresenta il percorso, non il dominio; dalla 3.0 `(new Nette\Http\Url('abcd'))->setScheme('http')` genera correttamente `http:abcd` invece del precedente `http://abcd`

Aggiornamento

Aggiornamento alla versione 3.4

La versione minima richiesta di PHP è la 8.3.

  • il metodo Request::isSameSite() è deprecato a favore di isFrom(), che determina l'origine della richiesta dagli header Sec-Fetch-*. La protezione automatica dei form e dei segnali diventa più precisa e cambia un comportamento: la navigazione diretta (un segnalibro, un indirizzo digitato a mano, un link in una email) non è più considerata same-site. Se un segnale conta sui link di azione nelle email, contrassegnatelo con #[Requires(sameOrigin: false)].
  • il cookie _nss viene ora inviato solo ai browser che non inviano l'header Sec-Fetch-Site
  • setCookie() invia l'attributo Max-Age e forza il flag Secure per SameSite=None e per i cookie partizionati
  • l'enum SameSite sostituisce le costanti IResponse::SameSiteLax ecc., che sono deprecate
  • la scadenza viene interpretata ovunque allo stesso modo: un numero è un numero relativo di secondi, una stringa è un intervallo o una data. Passare un timestamp UNIX assoluto è deprecato e il cookie di sessione si rappresenta con null invece che con 0.
  • il metodo deprecato Request::getRemoteHost() restituisce null
  • la classe deprecata da tempo Nette\Http\UserStorage è stata rimossa

Tutta la storia del passaggio agli header Sec-Fetch-* è raccontata nell'articolo Quarter Century of CSRF.

Aggiornamento alla versione 3.2

  • le credenziali dell'HTTP Basic Authentication non fanno più parte dell'oggetto Url, quindi $url->getUser() e $url->getPassword() restituiscono una stringa vuota. Leggetele con il nuovo metodo $request->getBasicCredentials().

I motivi di questo cambiamento sono spiegati nell'articolo Nette Http 3.2: change access to credentials.

Aggiornamento alla versione 3.1

  • i cookie vengono inviati con il flag sameSite: Lax
  • cookieSecure ha ora il valore predefinito ‚auto‘
  • l'opzione session.cookieSecure è deprecata, al suo posto si usa http.cookieSecure
  • il cookie nette-samesite è stato rinominato in _nss
  • Nette\Http\Request::getFile() accetta un array di chiavi e restituisce FileUpload|null
  • Nette\Http\Session::getCookieParameters() è deprecato
  • Nette\Http\FileUpload::getName() è stato rinominato in getUntrustedName()
  • Nette\Http\Url: getBasePath(), getBaseUrl() e getRelativeUrl() sono deprecati (questi metodi fanno parte di UrlScript)
  • Nette\Http\Response::$cookieHttpOnly è deprecato
  • Nette\Http\FileUpload::getImageSize() restituisce la coppia [larghezza, altezza]
  • con autoStart: smart (il valore predefinito) la sessione non viene più avviata subito dopo l'avvio dell'applicazione solo perché il browser ha inviato un cookie di sessione; si avvia alla prima lettura o scrittura. Sono stati aggiunti i valori always e never.
  • quando il browser invia un ID di sessione per il quale non esiste alcuna sessione, Nette cancella il cookie invece di creare una nuova sessione
  • per accedere alle sezioni della sessione preferite i metodi set(), get() e remove(); a differenza dell'accesso tramite proprietà distinguono correttamente la lettura dalla scrittura e non avviano la sessione inutilmente
  • i valori predefiniti di cookiePath e cookieDomain si possono impostare nella configurazione

Il comportamento delle sessioni è descritto in dettaglio nell'articolo Nette Http 3.1: much smarter sessions.

Aggiornamento alla versione 3.0

  • l'oggetto Nette\Http\UrlScript (restituito per esempio da Nette\Http\Request::getUrl()) è ora immutabile
  • in new Nette\Http\Url('abcd') la stringa abcd rappresenta il percorso, non il dominio; dalla 3.0 (new Nette\Http\Url('abcd'))->setScheme('http') genera correttamente http:abcd invece del precedente http://abcd