Upgrade

Upgrade na verzi 4.0

Minimální požadovaná verze PHP je 8.0.

Třída Nette\Utils\Reflection poskytovala metody pro práci s typy getParameterType(), getPropertyType() a getReturnType(). Metody vznikly v době, kdy PHP nemělo union, intersection nebo nejnovější disjunctive normal form typy, se kterými už nefungují, a nahradila je třída Type. Od verze 4.0 jsou tyto metody odstraněné.

Zrušená je proměnná Nette\Utils\Html::$xhtml.

Příznaky (flagy) v některých metodách nahradily pojmenované argumenty. Původní zápis stále funguje, ale není preferovaný: Json::PRETTYpretty:, Json::ESCAPE_UNICODEasciiSafe:, Json::FORCE_ARRAYforceArrays:, PREG_GREP_INVERT v Arrays::grep()invert:, Image::SHRINK_ONLY v Image::resize()shrinkOnly: a příznaky PREG_* v Strings::split(), match() a matchAll().

Metoda Nette\Utils\Reflection::getParameterDefaultValue() je zastaralá, protože nativní ReflectionParameter::getDefaultValue() už funguje správně.

Pokud používáte RobotLoader, zaktualizujte jej také na verzi 4.

Finder

Finder se přestěhoval do balíčku nette/utils, původní odstraňte:

composer remove nette/finder

Na Linuxu se nově chová v režimu case-sensitive.

V předchozí verzi platilo, že metody exclude() a filter() fungovaly jinak, když byly zavolány před from() resp. in() a po ní. Tohle už neplatí, exclude() a filter() fungují vždy stejně. Dřívější filter() volaný až po nahradila nová metoda descentFilter().

Finder již neimplementuje rozhraní Countable.

Řetězec začínající lomítkem ve Finder::findFiles('/f*') se nově považuje za absolutní cestu, je potřeba ho nahradit např. za Finder::findFiles('./f*').

Pokud adresář, ve kterém hledáte, neexistuje, vyhodí se Nette\InvalidStateException (místo UnexpectedValueException).

Co všechno přepsaný Finder umí, popisuje článek Finder 4.0: 10 let zkušeností pod kapotou.

Upgrade na verzi 3.1

  • Nette\Utils\Arrays::searchKey() přejmenováno na getKeyOffset()
  • Nette\Utils\Callback::closure() je zastaralý ve prospěch Closure::fromCallable()
  • Nette\Utils\Reflection::toString() přidává () za název funkce/metody
  • Nette\Utils\Strings::toAscii() vyvolá notice, pokud není přítomen ext-intl

Upgrade na verzi 3.0

Rozhraní Nette\Localization\ITranslator bylo změněno.

Nette\Object je zastaralý od Nette 2.4 a odstraněný v Nette 3.0. Stále však existuje pod novým názvem Nette\LegacyObject (jméno object nelze používat od PHP 7.1) v balíčku nette/deprecated.

Upgrade na verzi 2.4

Třídy frameworku nyní místo dědění od Nette\Object používají trait Nette\SmartObject, který se liší v několika věcech:

  • podporuje „emulované properties“ jen pokud je na třídě zapsaná anotace @property typ $nazev
  • nepodporuje „extension methods“
  • nepodporuje „getReflection“
  • nepodporuje získávání metod jako $this->formSubmitted; nahraďte za klasický PHP callback [$this, 'formSubmitted']

Metoda Nette\Utils\Html::add() byla nahrazena metodami addHtml() a addText().

Upgrade na verzi 2.3

  • Image::from() vyhodí ImageException, když nedokáže dekódovat soubor
  • Image::getFormatFromString() je zastaralá
  • Strings::chr() a normalize() nyní fungují pouze s kódováním UTF-8
  • Strings::chr() vyhodí Nette\InvalidArgumentException, pokud kód znaku není v platném rozsahu
verze: 4.x 3.x