Nette Documentation Preview

syntax
Upgrading
*********


Upgrading to Version 3.0
========================

Nette 3.0 adds type hints to method parameters and return values. If you override such a method in a class inheriting from Nette (for example in a presenter or component), you must add the same type hints, otherwise PHP raises a "Declaration must be compatible" error.

The `Nette\Application\IRouter` interface has changed. The `match()` method now returns, and `constructUrl()` accepts, an array of parameters instead of a `Nette\Application\Request` object.

Nette now checks that each signal is sent from the same origin (i.e. the same domain and subdomain). This same-origin policy is a critical security mechanism that helps reduce possible attack vectors. If you want to allow other origins, add the `@crossOrigin` annotation to the handler method:

```php
/**
 * @crossOrigin
 */
public function handleXy(): void
{
}
```

This also applies to form submissions. If you want to allow submission from other origins, do it this way:

```php
$form = new Nette\Application\UI\Form;
$form->allowCrossOrigin();
```

The constructor of `Nette\ComponentModel\Component` has not been used for years and was removed in version 3.0. It is a BC break: if you call the parent constructor in a component or presenter inheriting from `Nette\Application\UI\Presenter`, you must remove the call.


Upgrading to Version 2.4
========================

- `Route` and `SimpleRouter` now generate the same HTTP/HTTPS scheme that was used to access the site. A route that requires a specific protocol can be defined with the scheme, e.g. `Route('http://domain.cz/<presenter>')`.
- For bool-type parameters of render/action methods (i.e. with a default value of true or false) and for persistent parameters, `false` and `null` are now distinguished. If the parameter is not present in the URL, its value is now `null` (previously `false`).
- The class returned by `Presenter::getReflection()` is no longer a descendant of `Nette\Reflection\ClassType`, and `getReflection()->getMethod()` is no longer a descendant of `Nette\Reflection\Method`.
- The `SECURED` flag and `Route::$defaultFlags` are deprecated.


Upgrading to Version 2.3
========================

- routes and presenter names are **case-sensitive**. Nette warns you if you use the wrong case in a presenter name; for performance reasons the Route mask is not checked, so verify it manually.
- `Route::addStyle()` and `Route::setStyleProperty()` are deprecated and now trigger `E_USER_DEPRECATED`.
- the template extension `.phtml` and the old link syntax are no longer supported.

{{maintitle: Upgrading Nette Application: What Changed in Each Version}}
{{description: What changed in Nette Application 3.0, 2.4 and 2.3, and how to update your code: type hints, the router interface, same-origin signals and more.}}

Upgrading

Upgrading to Version 3.0

Nette 3.0 adds type hints to method parameters and return values. If you override such a method in a class inheriting from Nette (for example in a presenter or component), you must add the same type hints, otherwise PHP raises a “Declaration must be compatible” error.

The Nette\Application\IRouter interface has changed. The match() method now returns, and constructUrl() accepts, an array of parameters instead of a Nette\Application\Request object.

Nette now checks that each signal is sent from the same origin (i.e. the same domain and subdomain). This same-origin policy is a critical security mechanism that helps reduce possible attack vectors. If you want to allow other origins, add the @crossOrigin annotation to the handler method:

/**
 * @crossOrigin
 */
public function handleXy(): void
{
}

This also applies to form submissions. If you want to allow submission from other origins, do it this way:

$form = new Nette\Application\UI\Form;
$form->allowCrossOrigin();

The constructor of Nette\ComponentModel\Component has not been used for years and was removed in version 3.0. It is a BC break: if you call the parent constructor in a component or presenter inheriting from Nette\Application\UI\Presenter, you must remove the call.

Upgrading to Version 2.4

Upgrading to Version 2.3