Nette Documentation Preview

syntax
Přechod na verzi 3.1
********************

Minimální požadovaná verze PHP je 7.2.

Verzí Nette 3.1 se rozumí, že máte tyto balíčky nainstalované ve verze 3.1.*:

```json
"require": {
	"nette/application": "3.1.*",
	"nette/bootstrap": "3.1.*",
	"nette/forms": "3.1.*",
	"nette/http": "3.1.*",
	"nette/security": "3.1.*",
},
```

Pozor: u ostatních balíčků nainstalujte nejnovější verzi, kterou vám dovolí Composer! Mohou mít totiž jiné verzování. Zkuste uvést `"*"` a podívejte se, jakou verzi Composer nainstaluje.

Všemi změnami názvů uvedenými v tomto dokumentu se myslí, že původní názvy samozřejmě nadále existují a fungují, jen jsou označené jako deprecated. Můžete se setkat s tím, že vám je bude IDE vizuálně označovat jako deprecated.


Názvy rozhraní
--------------

V Nette se dlouhodobě postupně odstraňuje prefix `I` z názvů rozhraní, například `Nette\Security\IAuthenticator` se mění na `Authenticator` apod. Ve verzi Nette 3.1 zmizel prefix z názvů těchto rozhraní:

- `Nette\Application\IRouter`, `Nette\Application\IResponse`, `Nette\Application\UI\IRenderable`, `Nette\Application\UI\ISignalReceiver`, `Nette\Application\UI\IStatePersistent`, `Nette\Application\UI\ITemplate`, `Nette\Application\UI\ITemplateFactory`, `Nette\Bridges\ApplicationLatte\ILatteFactory`
- `Nette\Caching\IStorage`, `Nette\Caching\IBulkReader`, `Nette\Caching\Storages\IJournal`
- `Nette\Database\IConventions`, `Nette\Database\ISupplementalDriver` (nyní `Nette\Database\Driver`)
- `Nette\Mail\IMailer`
- `Latte\ILoader`, `Latte\Runtime\IHtmlString` (nyní `Latte\Runtime\HtmlStringable`), `Latte\Runtime\ISnipperDriver`, `Latte\IMacro`
- `Nette\Security\IAuthenticator` *), `Nette\Security\IAuthorizator`, `Nette\Security\IResource`, `Nette\Security\IRole`, `Nette\Security\IUserStorage` *)
- `Nette\Utils\IHtmlString` (nyní `Nette\HtmlStringable`), `Nette\Localization\ITranslator`

*) rozhraní s prefixem je jiné než bez prefixu


Bootstrap
---------
- třída `Nette\Configurator` byla přejmenována na `Nette\Bootstrap\Configurator`, aby pojmenování bylo konzistentní se zbytkem frameworku
- přidána metoda `addStaticParameters()` jako alias for `addParameters()`
- v parametrech předaných metodou `addStaticParameters()` nebo `addParameters()` se již neexpandují `%parametry%`


Caching
-------
- přejmenována metoda `Nette\Caching\Cache::start()` -> `capture()`


Database
--------
- přejmenována třída `Nette\Database\Context` na `Nette\Database\Explorer` kvůli konzistenci s pojmenováním [Database Explorer|database:explorer]
- rozhraní `Nette\Database\IRow` a `Nette\Database\IRowContainer` jsou označeny jako deprecated pro nepotřebnost
- MySqlDriver driver používá subqueries
- translator SQL příkazů lépe kontroluje, kde je možné předávat pole


Http
----
- cookie jsou odesílány s příznakem `sameSite: Lax`
- `cookieSecure` je nyní defaultně 'auto'
- volba `session.cookieSecure` je zastaralá, místo ní se používá `http.cookieSecure`
- cookie `nette-samesite` přejmenováno na `_nss`
- `Nette\Http\Request::getFile()` přijímá pole klíčů a vrací FileUpload|null
- `Nette\Http\Session::getCookieParameters()` je zastaralý.
- `Nette\Http\FileUpload::getName()` přejmenována na `getUntrustedName()`
- `Nette\Http\Url`: zastaralé getBasePath(), getBaseUrl(), getRelativeUrl() (tyto metody jsou součástí `UrlScript`)
- `Nette\Http\Response::$cookieHttpOnly` je zastaralé
- `Nette\Http\FileUpload::getImageSize()` vrací čistě dvojici `[width, height]`


Neon
----
- Decoder: pracuje v režimu UTF-8, při neplatném vstupu vyhodí výjimku
- syntaxe `\xAA` je zastaralá ve prospěch `\uAAAA`


Security
--------
- rozhraní `Nette\Security\Authenticator` se liší od `IAuthenticator` signaturou metody `autheticate(string $user, string $password)`
- rozhraní `Nette\Security\UserStorage` se liší od `Nette\Security\IUserStorage`
- přejmenována třída `Nette\Security\Identity` -> `Nette\Security\SimpleIdentity`, aby ve vzdálené budoucnosti mohl být interface `Nette\Security\IIdentity` přejmenován na `Identity`


Utils
-----
- `Nette\Utils\Arrays::searchKey()` přejmenováno na `getKeyOffset()`
- `Nette\Utils\Callback::closure()` je zastaralý ve prospěch `Closure::fromCallable()`
- `Nette\Utils\Reflection::toString()` přidává `()` za název funkce/metody
- `Nette\Utils\Strings::toAscii()` vyvolá notice, pokud není přítomen ext-intl

{{priority: -5}}

Přechod na verzi 3.1

Minimální požadovaná verze PHP je 7.2.

Verzí Nette 3.1 se rozumí, že máte tyto balíčky nainstalované ve verze 3.1.*:

"require": {
	"nette/application": "3.1.*",
	"nette/bootstrap": "3.1.*",
	"nette/forms": "3.1.*",
	"nette/http": "3.1.*",
	"nette/security": "3.1.*",
},

Pozor: u ostatních balíčků nainstalujte nejnovější verzi, kterou vám dovolí Composer! Mohou mít totiž jiné verzování. Zkuste uvést "*" a podívejte se, jakou verzi Composer nainstaluje.

Všemi změnami názvů uvedenými v tomto dokumentu se myslí, že původní názvy samozřejmě nadále existují a fungují, jen jsou označené jako deprecated. Můžete se setkat s tím, že vám je bude IDE vizuálně označovat jako deprecated.

Názvy rozhraní

V Nette se dlouhodobě postupně odstraňuje prefix I z názvů rozhraní, například Nette\Security\IAuthenticator se mění na Authenticator apod. Ve verzi Nette 3.1 zmizel prefix z názvů těchto rozhraní:

  • Nette\Application\IRouter, Nette\Application\IResponse, Nette\Application\UI\IRenderable, Nette\Application\UI\ISignalReceiver, Nette\Application\UI\IStatePersistent, Nette\Application\UI\ITemplate, Nette\Application\UI\ITemplateFactoryNette\Bridges\ApplicationLatte\ILatteFactory
  • Nette\Caching\IStorage, Nette\Caching\IBulkReader, Nette\Caching\Storages\IJournal
  • Nette\Database\IConventions, Nette\Database\ISupplementalDriver (nyní Nette\Database\Driver)
  • Nette\Mail\IMailer
  • Latte\ILoader, Latte\Runtime\IHtmlString (nyní Latte\Runtime\HtmlStringable), Latte\Runtime\ISnipperDriverLatte\IMacro
  • Nette\Security\IAuthenticator *), Nette\Security\IAuthorizator, Nette\Security\IResource, Nette\Security\IRole, Nette\Security\IUserStorage *)
  • Nette\Utils\IHtmlString (nyní Nette\HtmlStringable), Nette\Localization\ITranslator

*) rozhraní s prefixem je jiné než bez prefixu

Bootstrap

  • třída Nette\Configurator byla přejmenována na Nette\Bootstrap\Configurator, aby pojmenování bylo konzistentní se zbytkem frameworku
  • přidána metoda addStaticParameters() jako alias for addParameters()
  • v parametrech předaných metodou addStaticParameters() nebo addParameters() se již neexpandují %parametry%

Caching

  • přejmenována metoda Nette\Caching\Cache::start()capture()

Database

  • přejmenována třída Nette\Database\Context na Nette\Database\Explorer kvůli konzistenci s pojmenováním Database Explorer
  • rozhraní Nette\Database\IRow a Nette\Database\IRowContainer jsou označeny jako deprecated pro nepotřebnost
  • MySqlDriver driver používá subqueries
  • translator SQL příkazů lépe kontroluje, kde je možné předávat pole

Http

  • cookie jsou odesílány s příznakem sameSite: Lax
  • cookieSecure je nyní defaultně ‚auto‘
  • volba session.cookieSecure je zastaralá, místo ní se používá http.cookieSecure
  • cookie nette-samesite přejmenováno na _nss
  • Nette\Http\Request::getFile() přijímá pole klíčů a vrací FileUpload|null
  • Nette\Http\Session::getCookieParameters() je zastaralý.
  • Nette\Http\FileUpload::getName() přejmenována na getUntrustedName()
  • Nette\Http\Url: zastaralé getBasePath(), getBaseUrl(), getRelativeUrl() (tyto metody jsou součástí UrlScript)
  • Nette\Http\Response::$cookieHttpOnly je zastaralé
  • Nette\Http\FileUpload::getImageSize() vrací čistě dvojici [width, height]

Neon

  • Decoder: pracuje v režimu UTF-8, při neplatném vstupu vyhodí výjimku
  • syntaxe \xAA je zastaralá ve prospěch \uAAAA

Security

  • rozhraní Nette\Security\Authenticator se liší od IAuthenticator signaturou metody autheticate(string $user, string $password)
  • rozhraní Nette\Security\UserStorage se liší od Nette\Security\IUserStorage
  • přejmenována třída Nette\Security\IdentityNette\Security\SimpleIdentity, aby ve vzdálené budoucnosti mohl být interface Nette\Security\IIdentity přejmenován na Identity

Utils

  • Nette\Utils\Arrays::searchKey() přejmenováno na getKeyOffset()
  • Nette\Utils\Callback::closure() je zastaralý ve prospěch Closure::fromCallable()
  • Nette\Utils\Reflection::toString() přidává () za název funkce/metody
  • Nette\Utils\Strings::toAscii() vyvolá notice, pokud není přítomen ext-intl