アップグレード
バージョン 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 へのアップグレード
RouteとSimpleRouterは、サイトへのアクセスに使われたのと同じ HTTP/HTTPS のスキームを生成するようになりました。特定のプロトコルを要求するルートは、スキームを付けて定義できます。たとえばRoute('http://domain.cz/<presenter>')です。- render/action メソッドの bool 型のパラメータ(つまり既定値が true または false
のもの)と永続パラメータについて、
falseとnullが区別されるようになりました。パラメータが 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と古いリンクの構文はサポートされなくなりました。