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 |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`:
```shell
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 |https://blog.nette.org/en/finder-4-10-years-of-experience-under-the-hood].
Upgrade auf Version 3.1
=======================
- `Nette\Utils\Arrays::searchKey()` wurde in `getKeyOffset()` umbenannt
- `Nette\Utils\Callback::closure()` ist zugunsten von `Closure::fromCallable()` veraltet
- `Nette\Utils\Reflection::toString()` hängt hinter den Funktions- bzw. Methodennamen `()` an
- `Nette\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 |https://github.com/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 $name` vorhanden 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 eine `ImageException`, wenn sich die Datei nicht dekodieren lässt
- `Image::getFormatFromString()` ist veraltet
- `Strings::chr()` und `normalize()` arbeiten jetzt nur noch mit der UTF-8-Kodierung
- `Strings::chr()` wirft eine `Nette\InvalidArgumentException`, wenn der Codepunkt nicht im gültigen Bereich liegt
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 in getKeyOffset() umbenannt
Nette\Utils\Callback::closure() ist zugunsten von Closure::fromCallable() veraltet
Nette\Utils\Reflection::toString() hängt hinter den Funktions- bzw. Methodennamen () an
Nette\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 $name vorhanden 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 eine ImageException, wenn sich die Datei nicht dekodieren lässt
Image::getFormatFromString() ist veraltet
Strings::chr() und normalize() arbeiten jetzt nur noch mit der UTF-8-Kodierung
Strings::chr() wirft eine Nette\InvalidArgumentException, wenn der Codepunkt nicht im gültigen
Bereich liegt