アップグレード

バージョン 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:Arrays::grep()PREG_GREP_INVERTinvert:Image::resize()Image::SHRINK_ONLYshrinkOnly:、そして Strings::split()match()matchAll()PREG_* フラグです。

ネイティブの ReflectionParameter::getDefaultValue() がすでに正しく動くため、Nette\Utils\Reflection::getParameterDefaultValue() メソッドは非推奨です。

RobotLoader を使っている場合は、それもバージョン 4 に更新してください。

Finder

Finder は nette/utils パッケージに移りました。もとの nette/finder パッケージは削除してください。

composer remove nette/finder

Linux では、Finder は既定で大文字小文字を区別するモードで動くようになりました。

以前のバージョンでは、exclude()filter() メソッドは from()in()に呼ばれたかあとに呼ばれたかで振る舞いが違いました。もうそうではなく、exclude()filter() は常に同じように働きます。from()/in()あとに呼ばれた filter() の振る舞いは、新しいメソッド descentFilter() が担当します。

Finder はもう Countable インターフェースを実装しません。

Finder::findFiles('/f*') のようにスラッシュで始まる文字列は、絶対パスとみなされるようになりました。現在のディレクトリからの相対パスのつもりなら、たとえば Finder::findFiles('./f*') に置き換えてください。

検索対象のディレクトリが存在しない場合、(以前の UnexpectedValueException ではなく)Nette\InvalidStateException が投げられます。

書き直された Finder にほかに何ができるかは、記事 Finder 4.0: 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() は ext-intl がないときに notice を出します

バージョン 3.0 へのアップグレード

Nette\Localization\ITranslator インターフェースが変わりました。

Nette\Object は Nette 2.4 から非推奨で Nette 3.0 で削除されましたが、nette/deprecated パッケージの中に新しい名前 Nette\LegacyObject として残っています(PHP 7.1 以降、object という名前は使えません)。

バージョン 2.4 へのアップグレード

フレームワークのクラスは Nette\Object を継承する代わりに Nette\SmartObject トレイトを使うようになりました。いくつかの点で異なります。

  • 「疑似プロパティ」は、アノテーション @property type $name がある場合にだけ対応します
  • 「拡張メソッド」には対応しません
  • 「getReflection」には対応しません
  • $this->formSubmitted のようにメソッドを取得することには対応しません。代わりに従来の 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.x