Nette Documentation Preview

syntax
Aktualizacja
************


Aktualizacja do wersji 4.0
==========================

Minimalna wymagana wersja PHP to 8.0.

Klasa `Nette\Utils\Reflection` udostępniała do pracy z typami metody `getParameterType()`, `getPropertyType()` i `getReturnType()`. Metody te powstały w czasach, gdy PHP nie miało typów sumarycznych, przecięciowych ani najnowszych typów w dysjunkcyjnej postaci normalnej, z którymi już nie działają poprawnie. Zastąpiła je [klasa Type |type]. Od wersji 4.0 metody te zostały usunięte.

Zmienna `Nette\Utils\Html::$xhtml` została usunięta.

Flagi w niektórych metodach zostały zastąpione argumentami nazwanymi. Pierwotny zapis nadal działa, ale nie jest już preferowany: `Json::PRETTY` → `pretty:`, `Json::ESCAPE_UNICODE` → `asciiSafe:`, `Json::FORCE_ARRAY` → `forceArrays:`, `PREG_GREP_INVERT` w `Arrays::grep()` → `invert:`, `Image::SHRINK_ONLY` w `Image::resize()` → `shrinkOnly:` oraz flagi `PREG_*` w `Strings::split()`, `match()` i `matchAll()`.

Metoda `Nette\Utils\Reflection::getParameterDefaultValue()` jest przestarzała, bo natywna `ReflectionParameter::getDefaultValue()` działa już poprawnie.

Jeśli używasz RobotLoadera, zaktualizuj go również do wersji 4.


Finder
------

Finder przeniósł się do pakietu `nette/utils`. Usuń pierwotny pakiet `nette/finder`:

```shell
composer remove nette/finder
```

Na Linuksie Finder działa teraz domyślnie w trybie rozróżniającym wielkość liter.

W poprzedniej wersji metody `exclude()` i `filter()` zachowywały się różnie w zależności od tego, czy zostały wywołane **przed** `from()`/`in()`, czy **po** nich. Już tak nie jest; `exclude()` i `filter()` działają zawsze tak samo. Zachowanie `filter()` wywołanego *po* `from()`/`in()` obsługuje teraz nowa metoda `descentFilter()`.

Finder nie implementuje już interfejsu `Countable`.

String zaczynający się od ukośnika w `Finder::findFiles('/f*')` jest teraz uznawany za ścieżkę bezwzględną. Jeśli chodziło Ci o ścieżkę względną od bieżącego katalogu, zastąp ją na przykład przez `Finder::findFiles('./f*')`.

Jeśli katalog, w którym szukasz, nie istnieje, zgłaszany jest `Nette\InvalidStateException` (zamiast dotychczasowego `UnexpectedValueException`).

Co jeszcze potrafi przepisany Finder, opisuje artykuł [Finder 4.0: 10 lat doświadczeń pod maską |https://blog.nette.org/en/finder-4-10-years-of-experience-under-the-hood].


Aktualizacja do wersji 3.1
==========================

- `Nette\Utils\Arrays::searchKey()` zmieniło nazwę na `getKeyOffset()`
- `Nette\Utils\Callback::closure()` jest przestarzałe na rzecz `Closure::fromCallable()`
- `Nette\Utils\Reflection::toString()` dopisuje `()` po nazwie funkcji lub metody
- `Nette\Utils\Strings::toAscii()` zgłasza notice, gdy nie ma ext-intl


Aktualizacja do wersji 3.0
==========================

Interfejs `Nette\Localization\ITranslator` uległ zmianie.

`Nette\Object` jest przestarzały od Nette 2.4 i został usunięty w Nette 3.0, ale nadal istnieje pod nową nazwą `Nette\LegacyObject` (nazwy `object` nie da się użyć od PHP 7.1) w pakiecie [nette/deprecated |https://github.com/nette/deprecated].


Aktualizacja do wersji 2.4
==========================

Klasy frameworka używają teraz traitu `Nette\SmartObject` zamiast dziedziczyć po `Nette\Object`, co różni się w kilku przypadkach:

- obsługuje "emulowane właściwości" tylko wtedy, gdy obecna jest adnotacja `@property type $name`
- nie obsługuje "metod rozszerzających"
- nie obsługuje "getReflection"
- nie obsługuje pozyskiwania metod w rodzaju `$this->formSubmitted`; użyj zamiast tego klasycznego callbacku PHP `[$this, 'formSubmitted']`

Metodę `Nette\Utils\Html::add()` zastąpiły `addHtml()` i `addText()`.


Aktualizacja do wersji 2.3
==========================

- `Image::from()` zgłasza `ImageException`, gdy nie potrafi zdekodować pliku
- `Image::getFormatFromString()` jest przestarzałe
- `Strings::chr()` i `normalize()` działają teraz wyłącznie z kodowaniem UTF-8
- `Strings::chr()` zgłasza `Nette\InvalidArgumentException`, jeśli punkt kodowy nie mieści się w prawidłowym zakresie

Aktualizacja

Aktualizacja do wersji 4.0

Minimalna wymagana wersja PHP to 8.0.

Klasa Nette\Utils\Reflection udostępniała do pracy z typami metody getParameterType(), getPropertyType() i getReturnType(). Metody te powstały w czasach, gdy PHP nie miało typów sumarycznych, przecięciowych ani najnowszych typów w dysjunkcyjnej postaci normalnej, z którymi już nie działają poprawnie. Zastąpiła je klasa Type. Od wersji 4.0 metody te zostały usunięte.

Zmienna Nette\Utils\Html::$xhtml została usunięta.

Flagi w niektórych metodach zostały zastąpione argumentami nazwanymi. Pierwotny zapis nadal działa, ale nie jest już preferowany: Json::PRETTYpretty:, Json::ESCAPE_UNICODEasciiSafe:, Json::FORCE_ARRAYforceArrays:, PREG_GREP_INVERT w Arrays::grep()invert:, Image::SHRINK_ONLY w Image::resize()shrinkOnly: oraz flagi PREG_* w Strings::split(), match() i matchAll().

Metoda Nette\Utils\Reflection::getParameterDefaultValue() jest przestarzała, bo natywna ReflectionParameter::getDefaultValue() działa już poprawnie.

Jeśli używasz RobotLoadera, zaktualizuj go również do wersji 4.

Finder

Finder przeniósł się do pakietu nette/utils. Usuń pierwotny pakiet nette/finder:

composer remove nette/finder

Na Linuksie Finder działa teraz domyślnie w trybie rozróżniającym wielkość liter.

W poprzedniej wersji metody exclude() i filter() zachowywały się różnie w zależności od tego, czy zostały wywołane przed from()/in(), czy po nich. Już tak nie jest; exclude() i filter() działają zawsze tak samo. Zachowanie filter() wywołanego po from()/in() obsługuje teraz nowa metoda descentFilter().

Finder nie implementuje już interfejsu Countable.

String zaczynający się od ukośnika w Finder::findFiles('/f*') jest teraz uznawany za ścieżkę bezwzględną. Jeśli chodziło Ci o ścieżkę względną od bieżącego katalogu, zastąp ją na przykład przez Finder::findFiles('./f*').

Jeśli katalog, w którym szukasz, nie istnieje, zgłaszany jest Nette\InvalidStateException (zamiast dotychczasowego UnexpectedValueException).

Co jeszcze potrafi przepisany Finder, opisuje artykuł Finder 4.0: 10 lat doświadczeń pod maską.

Aktualizacja do wersji 3.1

  • Nette\Utils\Arrays::searchKey() zmieniło nazwę na getKeyOffset()
  • Nette\Utils\Callback::closure() jest przestarzałe na rzecz Closure::fromCallable()
  • Nette\Utils\Reflection::toString() dopisuje () po nazwie funkcji lub metody
  • Nette\Utils\Strings::toAscii() zgłasza notice, gdy nie ma ext-intl

Aktualizacja do wersji 3.0

Interfejs Nette\Localization\ITranslator uległ zmianie.

Nette\Object jest przestarzały od Nette 2.4 i został usunięty w Nette 3.0, ale nadal istnieje pod nową nazwą Nette\LegacyObject (nazwy object nie da się użyć od PHP 7.1) w pakiecie nette/deprecated.

Aktualizacja do wersji 2.4

Klasy frameworka używają teraz traitu Nette\SmartObject zamiast dziedziczyć po Nette\Object, co różni się w kilku przypadkach:

  • obsługuje „emulowane właściwości“ tylko wtedy, gdy obecna jest adnotacja @property type $name
  • nie obsługuje „metod rozszerzających“
  • nie obsługuje „getReflection“
  • nie obsługuje pozyskiwania metod w rodzaju $this->formSubmitted; użyj zamiast tego klasycznego callbacku PHP [$this, 'formSubmitted']

Metodę Nette\Utils\Html::add() zastąpiły addHtml() i addText().

Aktualizacja do wersji 2.3

  • Image::from() zgłasza ImageException, gdy nie potrafi zdekodować pliku
  • Image::getFormatFromString() jest przestarzałe
  • Strings::chr() i normalize() działają teraz wyłącznie z kodowaniem UTF-8
  • Strings::chr() zgłasza Nette\InvalidArgumentException, jeśli punkt kodowy nie mieści się w prawidłowym zakresie