Nette Documentation Preview

syntax
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::PRETTYpretty:, Json::ESCAPE_UNICODEasciiSafe:, Json::FORCE_ARRAYforceArrays:, 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