Nette Documentation Preview

syntax
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

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

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

Mise à niveau vers la version 2.3