Mise à niveau
*************
Mise à niveau vers la version 3.1
=================================
- l'autowiring ne passe plus `null` à un paramètre nullable sans valeur par défaut ; indiquez l'argument explicitement, ou donnez une valeur par défaut au paramètre
- la prise en charge de l'annotation `@return` a été abandonnée ; utilisez un type de retour, ou indiquez le type dans la définition du service à l'aide de `type:`
- la clé `dynamic` a été renommée en `imported` et `class` en `type`
- le symbole d'un argument omis passe de `...` à `_`, par exemple `MyService(_, 123)`
- dans les fichiers NEON, le caractère `@` au début d'une chaîne n'a plus besoin d'être échappé
- la clé `parameters` à l'intérieur des définitions de factories générées est obsolète
- la méthode `Nette\DI\Config\Loader::save()` est obsolète ; exportez la configuration à l'aide de `Nette\DI\Config\Adapters\NeonAdapter::dump()`
La version 3.1 est une version de transition : elle n'apporte pas de nouvelles fonctionnalités, mais elle signale par des avertissements tout ce qui fonctionnera différemment par la suite. Voir l'article [Nette DI 3.1: transition release |https://blog.nette.org/en/nette-di-3-1-transition-release].
Mise à niveau vers la version 3.0
=================================
- la prise en charge des fichiers INI a été supprimée
- l'écriture directe de code PHP dans la configuration à l'aide de points d'interrogation (par exemple `"$service->onError[] = ?"(...)`) a été supprimée ; utilisez à la place la syntaxe de tableau `'$onError[]' = [...]`
- dans les fichiers de configuration, utilisez `factory: PDO(...)` au lieu de `class: PDO(...)`
- le tag `nette.presenter` n'est plus utilisé pour les presenters
Pour les auteurs d'extensions du compilateur
--------------------------------------------
Alors que Nette 2.4 décrivait en interne chaque service comme `Nette\DI\ServiceDefinition`, il existe désormais plusieurs types de définitions : `Nette\DI\Definitions\ImportedDefinition` pour les services importés (dynamiques), `Nette\DI\Definitions\FactoryDefinition` pour les factories générées à partir d'interfaces, `Nette\DI\Definitions\AccessorDefinition` pour les accesseurs générés et `Nette\DI\Definitions\ServiceDefinition` pour les services courants.
C'est pourquoi, en plus de `ContainerBuilder::addDefinition()`, il existe plusieurs autres méthodes pour créer une nouvelle définition : `addFactoryDefinition()`, `addAccessorDefinition()` et `addImportedDefinition()`.
Mise à niveau vers la version 2.4
=================================
- les sections de configuration (par exemple production, development) dans un seul fichier de configuration sont obsolètes ; utilisez une paire de fichiers `config.neon` et `config.local.neon`
- l'héritage des définitions de services est obsolète
- `Statement::setEntity()` est obsolète
Mise à niveau vers la version 2.3
=================================
- la prise en charge du placement de services à l'intérieur de la section extension du fichier de configuration a été supprimée
- la prise en charge des extensions ajoutées dynamiquement a été supprimée
- lors du remplacement dynamique d'un service (via `removeService()`, `addService()`), le nouveau service doit être une instance de la même interface/classe que l'original
Mise à niveau
Mise à niveau vers la version 3.1
- l'autowiring ne passe plus
null à un paramètre nullable sans valeur par défaut ; indiquez l'argument
explicitement, ou donnez une valeur par défaut au paramètre
- la prise en charge de l'annotation
@return a été abandonnée ; utilisez un type de retour, ou indiquez le type
dans la définition du service à l'aide de type:
- la clé
dynamic a été renommée en imported et class en type
- le symbole d'un argument omis passe de
... à _, par exemple MyService(_, 123)
- dans les fichiers NEON, le caractère
@ au début d'une chaîne n'a plus besoin d'être échappé
- la clé
parameters à l'intérieur des définitions de factories générées est obsolète
- la méthode
Nette\DI\Config\Loader::save() est obsolète ; exportez la configuration à l'aide
de Nette\DI\Config\Adapters\NeonAdapter::dump()
La version 3.1 est une version de transition : elle n'apporte pas de nouvelles fonctionnalités, mais elle signale par des
avertissements tout ce qui fonctionnera différemment par la suite. Voir l'article Nette DI 3.1: transition release.
Mise à niveau vers la version 3.0
- la prise en charge des fichiers INI a été supprimée
- l'écriture directe de code PHP dans la configuration à l'aide de points d'interrogation (par exemple
"$service->onError[] = ?"(...)) a été supprimée ; utilisez à la place la syntaxe de
tableau '$onError[]' = [...]
- dans les fichiers de configuration, utilisez
factory: PDO(...) au lieu de class: PDO(...)
- le tag
nette.presenter n'est plus utilisé pour les presenters
Pour les auteurs d'extensions du compilateur
Alors que Nette 2.4 décrivait en interne chaque service comme Nette\DI\ServiceDefinition, il existe désormais
plusieurs types de définitions : Nette\DI\Definitions\ImportedDefinition pour les services importés (dynamiques),
Nette\DI\Definitions\FactoryDefinition pour les factories générées à partir d'interfaces,
Nette\DI\Definitions\AccessorDefinition pour les accesseurs générés et
Nette\DI\Definitions\ServiceDefinition pour les services courants.
C'est pourquoi, en plus de ContainerBuilder::addDefinition(), il existe plusieurs autres méthodes pour créer une
nouvelle définition : addFactoryDefinition(), addAccessorDefinition() et
addImportedDefinition().
Mise à niveau vers la version 2.4
- les sections de configuration (par exemple production, development) dans un seul fichier de configuration sont obsolètes ;
utilisez une paire de fichiers
config.neon et config.local.neon
- l'héritage des définitions de services est obsolète
Statement::setEntity() est obsolète
Mise à niveau vers la version 2.3
- la prise en charge du placement de services à l'intérieur de la section extension du fichier de configuration a été
supprimée
- la prise en charge des extensions ajoutées dynamiquement a été supprimée
- lors du remplacement dynamique d'un service (via
removeService(), addService()), le nouveau service
doit être une instance de la même interface/classe que l'original