Nette Documentation Preview

syntax
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á redukovat 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í.

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á redukovat 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í.