Upgrade
*******
Upgrade na verzi 3.0
====================
Nette 3.0 doplňuje typehinty k parametrům a návratovým hodnotám metod. Pokud takovou metodu přepisujete ve třídě zděděné z Nette (například v presenteru nebo komponentě), musíte doplnit stejné typehinty, jinak PHP vyhodí chybu "Declaration must be compatible".
Rozhraní `Nette\Application\IRouter` bylo změněno. Metoda `match()` nyní vrací a `constructUrl()` přijímá pole parametrů namísto objektu `Nette\Application\Request`.
Nette nyní kontroluje, zda je každý signál odeslán ze stejného originu (tj. ze stejné domény a subdomény). Tato same-origin policy je kritický bezpečnostní mechanismus, který pomáhá omezit možné vektory útoku. Pokud chcete povolit další původy, přidejte k metodě obsluhující signál anotaci `@crossOrigin`:
```php
/**
* @crossOrigin
*/
public function handleXy(): void
{
}
```
To platí také pro odesílání formulářů. Pokud chcete povolit odeslání z jiného původu, postupujte takto:
```php
$form = new Nette\Application\UI\Form;
$form->allowCrossOrigin();
```
Konstruktor `Nette\ComponentModel\Component` nebyl roky používán a byl odstraněn ve verzi 3.0. Je to BC break: pokud voláte rodičovský konstruktor v komponentě nebo presenteru zděděném od `Nette\Application\UI\Presenter`, musíte volání odstranit.
Upgrade na verzi 2.4
====================
- `Route` i `SimpleRouter` nyní generují v URL stejné HTTP/HTTPS schéma, s jakým se přistupuje ke stránce. Routu, která vyžaduje určitý protokol, lze zapsat se schématem, např. `Route('http://domain.cz/<presenter>')`.
- U parametrů typu bool použitých v render/action metodách (tj. s výchozí hodnotou true nebo false) a u persistentních parametrů se nyní rozlišuje mezi false a null. Pokud parametr v URL není uveden, jeho hodnota je nyní `null` (dříve `false`).
- Třída, kterou vrací `Presenter::getReflection()`, již není potomkem `Nette\Reflection\ClassType` a rovněž `getReflection()->getMethod()` není potomkem `Nette\Reflection\Method`.
- Flag `SECURED` a `Route::$defaultFlags` jsou zastaralé.
Upgrade na verzi 2.3
====================
- routy a názvy presenterů jsou **case-sensitive**. Nette vás upozorní, pokud v názvu presenteru použijete špatnou velikost písmen; masku routy z výkonnostních důvodů nekontroluje, ověřte si ji tedy ručně.
- `Route::addStyle()` a `Route::setStyleProperty()` jsou zastaralé a nyní vyvolají `E_USER_DEPRECATED`.
- přípona šablony `.phtml` a stará syntaxe odkazů se již nepodporují.
{{maintitle: Upgrade Nette Application: změny v jednotlivých verzích}}
{{description: Co se změnilo v Nette Application 3.0, 2.4 a 2.3 a jak upravit kód: typehinty, rozhraní routeru, same-origin kontrola signálů a další.}}
Upgrade
Upgrade na verzi 3.0
Nette 3.0 doplňuje typehinty k parametrům a návratovým hodnotám metod. Pokud takovou metodu přepisujete ve třídě
zděděné z Nette (například v presenteru nebo komponentě), musíte doplnit stejné typehinty, jinak PHP vyhodí chybu
„Declaration must be compatible“.
Rozhraní Nette\Application\IRouter bylo změněno. Metoda match() nyní vrací a
constructUrl() přijímá pole parametrů namísto objektu Nette\Application\Request.
Nette nyní kontroluje, zda je každý signál odeslán ze stejného originu (tj. ze stejné domény a subdomény). Tato
same-origin policy je kritický bezpečnostní mechanismus, který pomáhá omezit možné vektory útoku. Pokud chcete povolit
další původy, přidejte k metodě obsluhující signál anotaci @crossOrigin:
/**
* @crossOrigin
*/
public function handleXy(): void
{
}
To platí také pro odesílání formulářů. Pokud chcete povolit odeslání z jiného původu, postupujte takto:
$form = new Nette\Application\UI\Form;
$form->allowCrossOrigin();
Konstruktor Nette\ComponentModel\Component nebyl roky používán a byl odstraněn ve verzi 3.0. Je to BC break:
pokud voláte rodičovský konstruktor v komponentě nebo presenteru zděděném od Nette\Application\UI\Presenter,
musíte volání odstranit.
Upgrade na verzi 2.4
Route i SimpleRouter nyní generují v URL stejné HTTP/HTTPS schéma, s jakým se přistupuje ke
stránce. Routu, která vyžaduje určitý protokol, lze zapsat se schématem, např.
Route('http://domain.cz/<presenter>').
- U parametrů typu bool použitých v render/action metodách (tj. s výchozí hodnotou true nebo false) a
u persistentních parametrů se nyní rozlišuje mezi false a null. Pokud parametr v URL není uveden, jeho hodnota je nyní
null (dříve false).
- Třída, kterou vrací
Presenter::getReflection(), již není potomkem Nette\Reflection\ClassType a
rovněž getReflection()->getMethod() není potomkem Nette\Reflection\Method.
- Flag
SECURED a Route::$defaultFlags jsou zastaralé.
Upgrade na verzi 2.3
- routy a názvy presenterů jsou case-sensitive. Nette vás upozorní, pokud v názvu presenteru použijete špatnou
velikost písmen; masku routy z výkonnostních důvodů nekontroluje, ověřte si ji tedy ručně.
Route::addStyle() a Route::setStyleProperty() jsou zastaralé a nyní vyvolají
E_USER_DEPRECATED.
- přípona šablony
.phtml a stará syntaxe odkazů se již nepodporují.