アップグレード

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

Nette 3.0 では、メソッドのパラメータと戻り値に型宣言が加わりました。Nette を継承したクラス(プレゼンターやコンポーネントなど)でそうしたメソッドを上書きしている場合は、同じ型宣言を足さなければなりません。さもないと PHP が「Declaration must be compatible」のエラーを出します。

Nette\Application\IRouter インターフェースが変わりました。match() メソッドは Nette\Application\Request オブジェクトの代わりにパラメータの配列を返し、constructUrl() はそれを受け取るようになりました。

Nette は、各シグナルが同じオリジン(つまり同じドメインとサブドメイン)から送られたかを確認するようになりました。この同一オリジンポリシーは、起こり得る攻撃の経路を減らす助けになる決定的なセキュリティのしくみです。ほかのオリジンを許したい場合は、ハンドラのメソッドに @crossOrigin アノテーションを足してください。

/**
 * @crossOrigin
 */
public function handleXy(): void
{
}

これはフォームの送信にも当てはまります。ほかのオリジンからの送信を許したい場合は、次のようにします。

$form = new Nette\Application\UI\Form;
$form->allowCrossOrigin();

Nette\ComponentModel\Component のコンストラクタは何年も使われておらず、バージョン 3.0 で削除されました。これは BC break です。Nette\Application\UI\Presenter を継承したコンポーネントやプレゼンターで親のコンストラクタを呼んでいる場合は、その呼び出しを削除しなければなりません。

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

  • RouteSimpleRouter は、サイトへのアクセスに使われたのと同じ HTTP/HTTPS のスキームを生成するようになりました。特定のプロトコルを要求するルートは、スキームを付けて定義できます。たとえば Route('http://domain.cz/<presenter>') です。
  • render/action メソッドの bool 型のパラメータ(つまり既定値が true または false のもの)と永続パラメータについて、falsenull が区別されるようになりました。パラメータが URL にない場合、その値は(以前の false ではなく)null になります。
  • Presenter::getReflection() が返すクラスは、もう Nette\Reflection\ClassType の子孫ではなく、getReflection()->getMethod()Nette\Reflection\Method の子孫ではありません。
  • SECURED フラグと Route::$defaultFlags は非推奨です。

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

  • ルートとプレゼンター名は大文字小文字を区別します。プレゼンター名で誤った大文字小文字を使うと Nette が警告しますが、性能上の理由から Route のマスクは確認されないので、手で確かめてください。
  • Route::addStyle()Route::setStyleProperty() は非推奨で、E_USER_DEPRECATED を出すようになりました。
  • テンプレートの拡張子 .phtml と古いリンクの構文はサポートされなくなりました。
バージョン: 4.x