Nette Documentation Preview

syntax
Mise à niveau
*************


Mise à niveau vers la version 4.0
=================================

La version minimale de PHP requise est 8.0.

La classe `Nette\Utils\Reflection` fournissait les méthodes `getParameterType()`, `getPropertyType()` et `getReturnType()` pour travailler avec les types. Ces méthodes ont vu le jour à une époque où PHP ne connaissait ni les types union, ni les types intersection, ni la toute nouvelle forme normale disjonctive, avec lesquels elles ne fonctionnent plus correctement. Elles ont été remplacées par la [classe Type |type]. Depuis la version 4.0, ces méthodes sont supprimées.

La variable `Nette\Utils\Html::$xhtml` a été supprimée.

Les drapeaux de certaines méthodes ont été remplacés par des arguments nommés. L'écriture d'origine fonctionne encore, mais n'est plus recommandée : `Json::PRETTY` → `pretty:`, `Json::ESCAPE_UNICODE` → `asciiSafe:`, `Json::FORCE_ARRAY` → `forceArrays:`, `PREG_GREP_INVERT` dans `Arrays::grep()` → `invert:`, `Image::SHRINK_ONLY` dans `Image::resize()` → `shrinkOnly:`, ainsi que les drapeaux `PREG_*` dans `Strings::split()`, `match()` et `matchAll()`.

La méthode `Nette\Utils\Reflection::getParameterDefaultValue()` est dépréciée, car la méthode native `ReflectionParameter::getDefaultValue()` fonctionne désormais correctement.

Si vous utilisez RobotLoader, passez-le également en version 4.


Finder
------

Finder a rejoint le paquet `nette/utils`. Supprimez le paquet `nette/finder` d'origine :

```shell
composer remove nette/finder
```

Sous Linux, Finder fonctionne désormais par défaut en mode sensible à la casse.

Dans la version précédente, les méthodes `exclude()` et `filter()` se comportaient différemment selon qu'elles étaient appelées **avant** ou **après** `from()` ou `in()`. Ce n'est plus le cas : `exclude()` et `filter()` fonctionnent toujours de la même manière. Le comportement de `filter()` appelée *après* `from()`/`in()` est désormais assuré par la nouvelle méthode `descentFilter()`.

Finder n'implémente plus l'interface `Countable`.

Une chaîne commençant par une barre oblique dans `Finder::findFiles('/f*')` est désormais considérée comme un chemin absolu. Si vous vouliez un chemin relatif au répertoire courant, remplacez-la par exemple par `Finder::findFiles('./f*')`.

Si un répertoire dans lequel vous cherchez n'existe pas, une `Nette\InvalidStateException` est levée (au lieu de la précédente `UnexpectedValueException`).

Ce que le Finder réécrit sait faire de plus est décrit dans l'article [Finder 4.0 : 10 ans d'expérience sous le capot |https://blog.nette.org/en/finder-4-10-years-of-experience-under-the-hood].


Mise à niveau vers la version 3.1
=================================

- `Nette\Utils\Arrays::searchKey()` a été renommée en `getKeyOffset()`
- `Nette\Utils\Callback::closure()` est dépréciée au profit de `Closure::fromCallable()`
- `Nette\Utils\Reflection::toString()` ajoute `()` après le nom de la fonction ou de la méthode
- `Nette\Utils\Strings::toAscii()` déclenche une notice quand ext-intl est absente


Mise à niveau vers la version 3.0
=================================

L'interface `Nette\Localization\ITranslator` a changé.

`Nette\Object` est dépréciée depuis Nette 2.4 et a été supprimée dans Nette 3.0, mais elle existe toujours sous le nouveau nom `Nette\LegacyObject` (le nom `object` ne peut plus être utilisé depuis PHP 7.1) dans le paquet [nette/deprecated |https://github.com/nette/deprecated].


Mise à niveau vers la version 2.4
=================================

Les classes du framework utilisent désormais le trait `Nette\SmartObject` au lieu d'hériter de `Nette\Object`, ce qui diffère sur plusieurs points :

- il ne prend en charge les "propriétés émulées" que si l'annotation `@property type $name` est présente
- il ne prend pas en charge les "méthodes d'extension"
- il ne prend pas en charge "getReflection"
- il ne permet pas d'obtenir des méthodes comme `$this->formSubmitted` ; utilisez à la place un callback PHP classique `[$this, 'formSubmitted']`

La méthode `Nette\Utils\Html::add()` a été remplacée par `addHtml()` et `addText()`.


Mise à niveau vers la version 2.3
=================================

- `Image::from()` lève une `ImageException` quand elle ne parvient pas à décoder le fichier
- `Image::getFormatFromString()` est dépréciée
- `Strings::chr()` et `normalize()` ne fonctionnent plus qu'avec l'encodage UTF-8
- `Strings::chr()` lève une `Nette\InvalidArgumentException` si le point de code n'est pas dans la plage valide

Mise à niveau

Mise à niveau vers la version 4.0

La version minimale de PHP requise est 8.0.

La classe Nette\Utils\Reflection fournissait les méthodes getParameterType(), getPropertyType() et getReturnType() pour travailler avec les types. Ces méthodes ont vu le jour à une époque où PHP ne connaissait ni les types union, ni les types intersection, ni la toute nouvelle forme normale disjonctive, avec lesquels elles ne fonctionnent plus correctement. Elles ont été remplacées par la classe Type. Depuis la version 4.0, ces méthodes sont supprimées.

La variable Nette\Utils\Html::$xhtml a été supprimée.

Les drapeaux de certaines méthodes ont été remplacés par des arguments nommés. L'écriture d'origine fonctionne encore, mais n'est plus recommandée : Json::PRETTYpretty:, Json::ESCAPE_UNICODEasciiSafe:, Json::FORCE_ARRAYforceArrays:, PREG_GREP_INVERT dans Arrays::grep()invert:, Image::SHRINK_ONLY dans Image::resize()shrinkOnly:, ainsi que les drapeaux PREG_* dans Strings::split(), match() et matchAll().

La méthode Nette\Utils\Reflection::getParameterDefaultValue() est dépréciée, car la méthode native ReflectionParameter::getDefaultValue() fonctionne désormais correctement.

Si vous utilisez RobotLoader, passez-le également en version 4.

Finder

Finder a rejoint le paquet nette/utils. Supprimez le paquet nette/finder d'origine :

composer remove nette/finder

Sous Linux, Finder fonctionne désormais par défaut en mode sensible à la casse.

Dans la version précédente, les méthodes exclude() et filter() se comportaient différemment selon qu'elles étaient appelées avant ou après from() ou in(). Ce n'est plus le cas : exclude() et filter() fonctionnent toujours de la même manière. Le comportement de filter() appelée après from()/in() est désormais assuré par la nouvelle méthode descentFilter().

Finder n'implémente plus l'interface Countable.

Une chaîne commençant par une barre oblique dans Finder::findFiles('/f*') est désormais considérée comme un chemin absolu. Si vous vouliez un chemin relatif au répertoire courant, remplacez-la par exemple par Finder::findFiles('./f*').

Si un répertoire dans lequel vous cherchez n'existe pas, une Nette\InvalidStateException est levée (au lieu de la précédente UnexpectedValueException).

Ce que le Finder réécrit sait faire de plus est décrit dans l'article Finder 4.0 : 10 ans d'expérience sous le capot.

Mise à niveau vers la version 3.1

  • Nette\Utils\Arrays::searchKey() a été renommée en getKeyOffset()
  • Nette\Utils\Callback::closure() est dépréciée au profit de Closure::fromCallable()
  • Nette\Utils\Reflection::toString() ajoute () après le nom de la fonction ou de la méthode
  • Nette\Utils\Strings::toAscii() déclenche une notice quand ext-intl est absente

Mise à niveau vers la version 3.0

L'interface Nette\Localization\ITranslator a changé.

Nette\Object est dépréciée depuis Nette 2.4 et a été supprimée dans Nette 3.0, mais elle existe toujours sous le nouveau nom Nette\LegacyObject (le nom object ne peut plus être utilisé depuis PHP 7.1) dans le paquet nette/deprecated.

Mise à niveau vers la version 2.4

Les classes du framework utilisent désormais le trait Nette\SmartObject au lieu d'hériter de Nette\Object, ce qui diffère sur plusieurs points :

  • il ne prend en charge les „propriétés émulées“ que si l'annotation @property type $name est présente
  • il ne prend pas en charge les „méthodes d'extension“
  • il ne prend pas en charge „getReflection“
  • il ne permet pas d'obtenir des méthodes comme $this->formSubmitted ; utilisez à la place un callback PHP classique [$this, 'formSubmitted']

La méthode Nette\Utils\Html::add() a été remplacée par addHtml() et addText().

Mise à niveau vers la version 2.3

  • Image::from() lève une ImageException quand elle ne parvient pas à décoder le fichier
  • Image::getFormatFromString() est dépréciée
  • Strings::chr() et normalize() ne fonctionnent plus qu'avec l'encodage UTF-8
  • Strings::chr() lève une Nette\InvalidArgumentException si le point de code n'est pas dans la plage valide