Nette Documentation Preview

syntax
Обновление
**********


Обновление до версии 4.0
========================

Минимальная требуемая версия PHP - 8.0.

Класс `Nette\Utils\Reflection` предоставлял для работы с типами методы `getParameterType()`, `getPropertyType()` и `getReturnType()`. Эти методы появились тогда, когда в PHP ещё не было объединённых, пересекающихся и новейших типов в дизъюнктивной нормальной форме, с которыми они уже не работают правильно. Их заменил [класс Type |type]. Начиная с версии 4.0 эти методы удалены.

Переменная `Nette\Utils\Html::$xhtml` удалена.

Флаги в некоторых методах заменены именованными аргументами. Прежняя запись ещё работает, но больше не является предпочтительной: `Json::PRETTY` → `pretty:`, `Json::ESCAPE_UNICODE` → `asciiSafe:`, `Json::FORCE_ARRAY` → `forceArrays:`, `PREG_GREP_INVERT` в `Arrays::grep()` → `invert:`, `Image::SHRINK_ONLY` в `Image::resize()` → `shrinkOnly:`, а также флаги `PREG_*` в `Strings::split()`, `match()` и `matchAll()`.

Метод `Nette\Utils\Reflection::getParameterDefaultValue()` объявлен устаревшим, потому что нативный `ReflectionParameter::getDefaultValue()` уже работает правильно.

Если вы используете RobotLoader, обновите и его до версии 4.


Finder
------

Finder переехал в пакет `nette/utils`. Удалите исходный пакет `nette/finder`:

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

В Linux Finder теперь по умолчанию работает с учётом регистра.

В предыдущей версии методы `exclude()` и `filter()` вели себя по-разному в зависимости от того, вызывались ли они **до** или **после** `from()` либо `in()`. Больше это не так: `exclude()` и `filter()` всегда работают одинаково. Поведение `filter()`, вызванного *после* `from()`/`in()`, теперь обеспечивает новый метод `descentFilter()`.

Finder больше не реализует интерфейс `Countable`.

Строка, начинающаяся со слеша, в `Finder::findFiles('/f*')` теперь считается абсолютным путём. Если вы имели в виду относительный путь от текущего каталога, замените его, например, на `Finder::findFiles('./f*')`.

Если каталог, в котором вы ищете, не существует, выбрасывается `Nette\InvalidStateException` (вместо прежнего `UnexpectedValueException`).

О том, что ещё умеет переписанный Finder, рассказывает статья [Finder 4.0: 10 лет опыта под капотом |https://blog.nette.org/en/finder-4-10-years-of-experience-under-the-hood].


Обновление до версии 3.1
========================

- `Nette\Utils\Arrays::searchKey()` переименован в `getKeyOffset()`
- `Nette\Utils\Callback::closure()` объявлен устаревшим в пользу `Closure::fromCallable()`
- `Nette\Utils\Reflection::toString()` добавляет `()` после имени функции или метода
- `Nette\Utils\Strings::toAscii()` выдаёт notice, если отсутствует ext-intl


Обновление до версии 3.0
========================

Интерфейс `Nette\Localization\ITranslator` изменился.

`Nette\Object` объявлен устаревшим начиная с Nette 2.4 и удалён в Nette 3.0, но он по-прежнему существует под новым именем `Nette\LegacyObject` (имя `object` использовать нельзя начиная с PHP 7.1) в пакете [nette/deprecated |https://github.com/nette/deprecated].


Обновление до версии 2.4
========================

Классы фреймворка теперь используют трейт `Nette\SmartObject` вместо наследования от `Nette\Object`, что отличается в нескольких случаях:

- он поддерживает "эмулируемые свойства" только при наличии аннотации `@property type $name`
- он не поддерживает "методы расширения"
- он не поддерживает "getReflection"
- он не поддерживает получение методов вида `$this->formSubmitted`; используйте вместо этого классический callback PHP `[$this, 'formSubmitted']`

Метод `Nette\Utils\Html::add()` заменён методами `addHtml()` и `addText()`.


Обновление до версии 2.3
========================

- `Image::from()` выбрасывает `ImageException`, когда не может декодировать файл
- `Image::getFormatFromString()` объявлен устаревшим
- `Strings::chr()` и `normalize()` теперь работают только с кодировкой UTF-8
- `Strings::chr()` выбрасывает `Nette\InvalidArgumentException`, если код символа выходит за допустимый диапазон

Обновление

Обновление до версии 4.0

Минимальная требуемая версия PHP – 8.0.

Класс Nette\Utils\Reflection предоставлял для работы с типами методы getParameterType(), getPropertyType() и getReturnType(). Эти методы появились тогда, когда в PHP ещё не было объединённых, пересекающихся и новейших типов в дизъюнктивной нормальной форме, с которыми они уже не работают правильно. Их заменил класс Type. Начиная с версии 4.0 эти методы удалены.

Переменная Nette\Utils\Html::$xhtml удалена.

Флаги в некоторых методах заменены именованными аргументами. Прежняя запись ещё работает, но больше не является предпочтительной: Json::PRETTYpretty:, Json::ESCAPE_UNICODEasciiSafe:, Json::FORCE_ARRAYforceArrays:, PREG_GREP_INVERT в Arrays::grep()invert:, Image::SHRINK_ONLY в Image::resize()shrinkOnly:, а также флаги PREG_* в Strings::split(), match() и matchAll().

Метод Nette\Utils\Reflection::getParameterDefaultValue() объявлен устаревшим, потому что нативный ReflectionParameter::getDefaultValue() уже работает правильно.

Если вы используете RobotLoader, обновите и его до версии 4.

Finder

Finder переехал в пакет nette/utils. Удалите исходный пакет nette/finder:

composer remove nette/finder

В Linux Finder теперь по умолчанию работает с учётом регистра.

В предыдущей версии методы exclude() и filter() вели себя по-разному в зависимости от того, вызывались ли они до или после from() либо in(). Больше это не так: exclude() и filter() всегда работают одинаково. Поведение filter(), вызванного после from()/in(), теперь обеспечивает новый метод descentFilter().

Finder больше не реализует интерфейс Countable.

Строка, начинающаяся со слеша, в Finder::findFiles('/f*') теперь считается абсолютным путём. Если вы имели в виду относительный путь от текущего каталога, замените его, например, на Finder::findFiles('./f*').

Если каталог, в котором вы ищете, не существует, выбрасывается Nette\InvalidStateException (вместо прежнего UnexpectedValueException).

О том, что ещё умеет переписанный Finder, рассказывает статья Finder 4.0: 10 лет опыта под капотом.

Обновление до версии 3.1

  • Nette\Utils\Arrays::searchKey() переименован в getKeyOffset()
  • Nette\Utils\Callback::closure() объявлен устаревшим в пользу Closure::fromCallable()
  • Nette\Utils\Reflection::toString() добавляет () после имени функции или метода
  • Nette\Utils\Strings::toAscii() выдаёт notice, если отсутствует ext-intl

Обновление до версии 3.0

Интерфейс Nette\Localization\ITranslator изменился.

Nette\Object объявлен устаревшим начиная с Nette 2.4 и удалён в Nette 3.0, но он по-прежнему существует под новым именем Nette\LegacyObject (имя object использовать нельзя начиная с PHP 7.1) в пакете nette/deprecated.

Обновление до версии 2.4

Классы фреймворка теперь используют трейт Nette\SmartObject вместо наследования от Nette\Object, что отличается в нескольких случаях:

  • он поддерживает „эмулируемые свойства“ только при наличии аннотации @property type $name
  • он не поддерживает „методы расширения“
  • он не поддерживает „getReflection“
  • он не поддерживает получение методов вида $this->formSubmitted; используйте вместо этого классический callback PHP [$this, 'formSubmitted']

Метод Nette\Utils\Html::add() заменён методами addHtml() и addText().

Обновление до версии 2.3

  • Image::from() выбрасывает ImageException, когда не может декодировать файл
  • Image::getFormatFromString() объявлен устаревшим
  • Strings::chr() и normalize() теперь работают только с кодировкой UTF-8
  • Strings::chr() выбрасывает Nette\InvalidArgumentException, если код символа выходит за допустимый диапазон