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í
{{maintitle: Upgrade Nette DI: změny v jednotlivých verzích}}
{{description: Co se změnilo v Nette DI 3.1, 3.0, 2.4 a 2.3 a jak upravit kód a konfiguraci v NEON: autowiring parametrů s null, přejmenované klíče a další.}}
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.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í