Upgrade
Upgrade auf Version 4.0
Die mindestens erforderliche PHP-Version ist 8.0.
Die Klasse Nette\Utils\Reflection bot für die Arbeit mit Typen die Methoden getParameterType(),
getPropertyType() und getReturnType(). Diese Methoden entstanden zu einer Zeit, als PHP noch keine
Union-, Intersection- und die neuesten disjunktiven Normalform-Typen kannte, mit denen sie nicht mehr korrekt arbeiten. Ersetzt
wurden sie durch die Klasse Type. Ab Version 4.0 sind diese Methoden
entfernt.
Die Variable Nette\Utils\Html::$xhtml wurde entfernt.
Flags wurden bei einigen Methoden durch benannte Argumente ersetzt. Die ursprüngliche Schreibweise funktioniert weiterhin, ist
aber nicht mehr die bevorzugte: Json::PRETTY → pretty:, Json::ESCAPE_UNICODE →
asciiSafe:, Json::FORCE_ARRAY → forceArrays:, PREG_GREP_INVERT in
Arrays::grep() → invert:, Image::SHRINK_ONLY in Image::resize() →
shrinkOnly: sowie die PREG_*-Flags in Strings::split(), match() und
matchAll().
Die Methode Nette\Utils\Reflection::getParameterDefaultValue() ist veraltet, weil das native
ReflectionParameter::getDefaultValue() bereits korrekt arbeitet.
Wenn Sie den RobotLoader verwenden, aktualisieren Sie ihn ebenfalls auf Version 4.
Finder
Der Finder ist in das Paket nette/utils umgezogen. Entfernen Sie das ursprüngliche Paket
nette/finder:
composer remove nette/finder
Unter Linux arbeitet der Finder jetzt standardmäßig case-sensitiv.
In der vorigen Version verhielten sich die Methoden exclude() und filter() unterschiedlich, je
nachdem, ob sie vor oder nach from() bzw. in() aufgerufen wurden. Das ist nicht mehr so;
exclude() und filter() funktionieren immer gleich. Das Verhalten von filter() nach
from()/in() übernimmt jetzt die neue Methode descentFilter().
Der Finder implementiert das Interface Countable nicht mehr.
Ein String, der in Finder::findFiles('/f*') mit einem Schrägstrich beginnt, gilt jetzt als absoluter Pfad. Wenn
Sie einen relativen Pfad vom aktuellen Verzeichnis gemeint haben, ersetzen Sie ihn zum Beispiel durch
Finder::findFiles('./f*').
Existiert ein Verzeichnis nicht, in dem Sie suchen, wird eine Nette\InvalidStateException geworfen (statt der
bisherigen UnexpectedValueException).
Was der neu geschriebene Finder sonst noch kann, beschreibt der Artikel Finder 4.0: 10 years of experience under the hood.
Upgrade auf Version 3.1
Nette\Utils\Arrays::searchKey()wurde ingetKeyOffset()umbenanntNette\Utils\Callback::closure()ist zugunsten vonClosure::fromCallable()veraltetNette\Utils\Reflection::toString()hängt hinter den Funktions- bzw. Methodennamen()anNette\Utils\Strings::toAscii()löst eine Notice aus, wenn ext-intl fehlt
Upgrade auf Version 3.0
Das Interface Nette\Localization\ITranslator hat sich geändert.
Nette\Object ist seit Nette 2.4 veraltet und wurde in Nette 3.0 entfernt, existiert aber unter dem neuen Namen
Nette\LegacyObject weiter (der Name object lässt sich seit PHP 7.1 nicht mehr verwenden), und zwar im
Paket nette/deprecated.
Upgrade auf Version 2.4
Die Klassen des Frameworks verwenden jetzt den Trait Nette\SmartObject, statt von Nette\Object zu
erben, was sich in mehreren Fällen unterscheidet:
- er unterstützt “emulierte Properties” nur dann, wenn die Annotation
@property type $namevorhanden ist - er unterstützt keine “Extension-Methoden”
- er unterstützt kein “getReflection”
- er unterstützt nicht das Holen von Methoden wie
$this->formSubmitted; verwenden Sie stattdessen einen klassischen PHP-Callback[$this, 'formSubmitted']
Die Methode Nette\Utils\Html::add() wurde durch addHtml() und addText() ersetzt.
Upgrade auf Version 2.3
Image::from()wirft eineImageException, wenn sich die Datei nicht dekodieren lässtImage::getFormatFromString()ist veraltetStrings::chr()undnormalize()arbeiten jetzt nur noch mit der UTF-8-KodierungStrings::chr()wirft eineNette\InvalidArgumentException, wenn der Codepunkt nicht im gültigen Bereich liegt