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
version: 4.x