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

  • 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