Nette Documentation Preview

syntax
Upgrade
*******


Upgrade na verzi 3.1
====================

- autowiring již nepředává `null` do nullable parametru bez výchozí hodnoty; argument uveďte explicitně, nebo parametru doplňte výchozí hodnotu
- skončila podpora anotace `@return`; použijte návratový typ, nebo typ uveďte v definici služby pomocí `type:`
- klíč `dynamic` byl přejmenován na `imported` a `class` na `type`
- symbol pro vynechaný argument se změnil z `...` na `_`, např. `MyService(_, 123)`
- v souborech NEON už není potřeba na začátku řetězce escapovat znak `@`
- klíč `parameters` uvnitř definic generovaných továren je zastaralý
- metoda `Nette\DI\Config\Loader::save()` je zastaralá; konfiguraci exportujte pomocí `Nette\DI\Config\Adapters\NeonAdapter::dump()`

Verze 3.1 je přechodová: nepřináší novinky, ale pomocí notices upozorňuje na vše, co bude později fungovat jinak. Viz článek [Nette DI 3.1: přechodová verze |https://blog.nette.org/cs/nette-di-3-1-prechodova-verze].


Upgrade na verzi 3.0
====================

- byla odstraněna podpora INI souborů
- byl odstraněn přímý zápis PHP kódu do konfigurace pomocí otazníků (např. `"$service->onError[] = ?"(...)`); použijte místo něj syntaxi s polem `'$onError[]' = [...]`
- v konfiguračních souborech místo `class: PDO(...)` použijte `factory: PDO(...)`
- tag `nette.presenter` se pro presentery už nepoužívá


Pro tvůrce Compiler Extensions
------------------------------

Zatímco v Nette 2.4 interně popisoval každou službu objekt `Nette\DI\ServiceDefinition`, dnes existuje definic vícero: `Nette\DI\Definitions\ImportedDefinition` pro importované (dynamické) služby, `Nette\DI\Definitions\FactoryDefinition` pro generované továrničky na základě rozhraní, `Nette\DI\Definitions\AccessorDefinition` pro generované accessory a `Nette\DI\Definitions\ServiceDefinition` pro běžné služby.

Kromě `ContainerBuilder::addDefinition()` proto existuje pro vytvoření nové definice několik dalších metod: `addFactoryDefinition()`, `addAccessorDefinition()` a `addImportedDefinition()`.


Upgrade na verzi 2.4
====================

- sekce (např. production, development) v jednom konfiguračním souboru jsou zastaralé; použijte dvojici souborů `config.neon` a `config.local.neon`
- dědičnost definic služeb je zastaralá
- `Statement::setEntity()` je zastaralá


Upgrade na verzi 2.3
====================

- byla odstraněna podpora pro umisťování služeb do sekce extension v konfiguračním souboru
- byla odstraněna podpora dynamicky přidávaných rozšíření
- při dynamické výměně služby (přes `removeService()`, `addService()`) musí být nová služba instancí stejného rozhraní/třídy jako původní

Upgrade

Upgrade na verzi 3.1

  • autowiring již nepředává null do nullable parametru bez výchozí hodnoty; argument uveďte explicitně, nebo parametru doplňte výchozí hodnotu
  • skončila podpora anotace @return; použijte návratový typ, nebo typ uveďte v definici služby pomocí type:
  • klíč dynamic byl přejmenován na imported a class na type
  • symbol pro vynechaný argument se změnil z ... na _, např. MyService(_, 123)
  • v souborech NEON už není potřeba na začátku řetězce escapovat znak @
  • klíč parameters uvnitř definic generovaných továren je zastaralý
  • metoda Nette\DI\Config\Loader::save() je zastaralá; konfiguraci exportujte pomocí Nette\DI\Config\Adapters\NeonAdapter::dump()

Verze 3.1 je přechodová: nepřináší novinky, ale pomocí notices upozorňuje na vše, co bude později fungovat jinak. Viz článek Nette DI 3.1: přechodová verze.

Upgrade na verzi 3.0

  • byla odstraněna podpora INI souborů
  • byl odstraněn přímý zápis PHP kódu do konfigurace pomocí otazníků (např. "$service->onError[] = ?"(...)); použijte místo něj syntaxi s polem '$onError[]' = [...]
  • v konfiguračních souborech místo class: PDO(...) použijte factory: PDO(...)
  • tag nette.presenter se pro presentery už nepoužívá

Pro tvůrce Compiler Extensions

Zatímco v Nette 2.4 interně popisoval každou službu objekt Nette\DI\ServiceDefinition, dnes existuje definic vícero: Nette\DI\Definitions\ImportedDefinition pro importované (dynamické) služby, Nette\DI\Definitions\FactoryDefinition pro generované továrničky na základě rozhraní, Nette\DI\Definitions\AccessorDefinition pro generované accessory a Nette\DI\Definitions\ServiceDefinition pro běžné služby.

Kromě ContainerBuilder::addDefinition() proto existuje pro vytvoření nové definice několik dalších metod: addFactoryDefinition(), addAccessorDefinition() a addImportedDefinition().

Upgrade na verzi 2.4

  • sekce (např. production, development) v jednom konfiguračním souboru jsou zastaralé; použijte dvojici souborů config.neonconfig.local.neon
  • dědičnost definic služeb je zastaralá
  • Statement::setEntity() je zastaralá

Upgrade na verzi 2.3

  • byla odstraněna podpora pro umisťování služeb do sekce extension v konfiguračním souboru
  • byla odstraněna podpora dynamicky přidávaných rozšíření
  • při dynamické výměně služby (přes removeService(), addService()) musí být nová služba instancí stejného rozhraní/třídy jako původní