アップグレード
バージョン 4.0 へのアップグレード
必要な PHP の最低バージョンは 8.0 です。
Nette\Utils\Reflection クラスには、型を扱うための
getParameterType()、getPropertyType()、getReturnType()
メソッドがありました。これらは PHP
にまだ合併型、交差型、そして最新の選言標準形の型がなかった頃に作られたもので、それらでは正しく動きません。Type クラスに置き換えられました。バージョン 4.0
でこれらのメソッドは削除されました。
変数 Nette\Utils\Html::$xhtml は削除されました。
一部のメソッドのフラグは名前付き引数に置き換えられました。もとの書き方も動きますが、もう推奨されません。Json::PRETTY
→ pretty:、Json::ESCAPE_UNICODE → asciiSafe:、Json::FORCE_ARRAY →
forceArrays:、Arrays::grep() の PREG_GREP_INVERT →
invert:、Image::resize() の Image::SHRINK_ONLY → shrinkOnly:、そして
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を投げます