Yii 2.0.11

PHPフレームワークYiiバージョン2.0.11のリリース。 更新およびインストールの手順は、公式Webサイトで見つけることができます。 バージョン2.0.11には、 110以上の機能強化と修正が含まれています。







4つの小さな変更が既存のアプリケーションに影響を与える可能性があるため、 UPGRADE.mdに注意してください







素晴らしいコミュニティに感謝します。 一緒にやった!







Yii 2の開発プロセスは、 GitHubにアスタリスクを付けることで監視できます。 TwitterFacebookもあります。







Yii 2.1ではすでに作業が進行中なので、 composer.json



のフレームワークのバージョンが~2.0.11



として登録されていることを確認してください。 そうしないと、リリース2.1以降、プロジェクトが破損する可能性があります。







次に、リリースに含まれる最も興味深い変更と改善を検討します。 完全なリストはCHANGELOGで入手できます。







テストカバレッジ



まれな例外を除き、テストなしでプルリクエストを受け入れないことにしました。 これにより、コードの品質が向上し、検証にかかる時間が短縮されます。 この決定に従って、2.0.11のプルリクエストの半分以上が受け入れられました。







URLマネージャーのテストなどの一部のテストでは、大幅なリファクタリングが行われています。 メソッドは小さくなり、読みやすくなりました。







Alexey Rogachevは、フレームワークのJavaScript部分のテストをリファクタリング、修正、およびカバーするために重要な仕事をしました。







コンソール



BashおよびZshコンソールでは、。 ./yii



チーム用の拡張機能を整理するのが非常に簡単になりました。 設定はマニュアルに記載されています







さらに、誤記がある場合、コンソールは既存のコマンドに同様のスペルでプロンプトを表示します。







キャッシュ



yii\caching\Cache::$defaultDuration



使用して、キャッシュ内のデータストレージの期間をグローバルに設定できるようになりました。







便利な構文が登場しました:







 $data = $cache->getOrSet($key, function () { return $this->calculateSomething(); });
      
      





上記のコードは次と同じです:







 $data = $cache->get($key); if ($data === false) { $data = $this->calculateSomething(); $cache->set($key, $data); }
      
      





構成



長い議論の末、メインアプリケーションの構成を通じて依存関係コンテナーを構成する機能を追加することが決定されました。







 $config = [ 'id' => 'basic', // ... 'container' => [ 'definitions' => [ 'yii\widgets\LinkPager' => ['maxButtonCount' => 5] ], 'singletons' => [ ], ], ];
      
      





この機能の詳細については、公式マニュアルの「 アプリケーション構成 」セクションをご覧ください。







もう少し便利さと構文



各リリースでは、開発をより楽しくするために、エラーをより便利で正確にするよう努めています。 2.0.11も例外ではありません。 現在、存在しないコンポーネントにアクセスしようとするとエラーが発生し、これが実際に起こったことを報告します。 以前は、フレームワークはクラスを自動的にロードすることは不可能であると誓いました。







2つのメソッドがコントローラーに追加されました: asJson()



およびasXml()



。 これらは、それぞれJSON形式とXML形式でデータを返すのに役立ちます。







性能





別の改善はパフォーマンスに直接影響しませんが、アプリケーションでの改善に確実に役立ちます。 メモリ使用量とルートマッピングプロセスのロギングを開始しました。 次のデバッグモジュールリリースで適切なパネルを期待してください。







データベース



yii\db\Query



3つの新しいメソッドが追加されました: filterHaving()



andFilterHaving()



orFilterHaving()



。 これらは他のfilter*



メソッドに似ており、値が空でない場合にのみ条件を追加し、通常はさまざまなフィルターに使用されます。







マスタースレーブ構成の場合、 yii\db\Connection



クラスの使用がより便利になりました。









\yii\db\Query



は、2番目の引数によって直接、またはパラメータの1つの値としてinsert()



渡すことができます。







 $db = Yii::$app->db; //  query $sourceQuery = new \yii\db\Query() ->select([ 'title', 'content', ])->from('{{post_queue}}'); $command = $db->createCommand(); $command->insert('{{post}}', $sourceQuery); //  query   $titleQuery = new \yii\db\Query() ->select('title')->from('{{titles}}')->limit(1); $command = $db->createCommand(); $command->insert('{{post}}', [ 'title' => $titleQuery, 'content' => '!', ]);
      
      





PHP 7互換



PHP 7との互換性についてフレームワークを常にチェックしています。2.0.11までに、エラー処理とThrowable



関連する問題を発見して修正しました。







URLマネージャー



UrlManager::createAbsoluteUrl()



Url::to()



またはUrl::toRoute()



を使用してURLを生成する場合、プロトコルに依存しないURLを作成するためにスキームを空として指定できるようになりました。







 echo Url::to('@web/images/logo.gif', ''); // //www.example.com/images/logo.gif
      
      





また、URLを生成する場合、デフォルト値が存在するパラメーターはオプションです。







 echo Url::to(['post/index', 'page' => 1, 'tag' => '']); //   : echo Url::to(['post/index', 'page' => 1]);
      
      





ウィジェット



ウィジェットの拡張性が大幅に改善されました。 初期化中、レンダリングの開始前および完了後にイベントを追加しました。 アプリケーションの例については、issue説明を参照してください。







安全性



HostControl



フィルターはHostControl



に含まれていたため、ホストのなりすましによる攻撃を防ぐことができます。 理想的には、Webサーバーの正しい構成を許可しない方が良いのですが、構成にアクセスできない人からかなりの数の要求が来たためです。

サーバーは、このフィルターをフレームワークに含めることにしました。 このフィルタの設定の詳細は、マニュアルに記載されています







また、デバッグモードのエラーページでデータをシールドする問題が見つかり、修正されました。 この問題は運用サーバーには影響しないため、個別のパッチリリースはリリースしませんでした。







Composerインストーラー



フレームワークのリリースとともに、 Composerインストーラーの新しいバージョン2.0.5をリリースしています。 Composer用のこのプラグインは、拡張機能のインストールを担当し、 ブートストラップ中に設定なしで実行できるようにします。 また、新しいプロジェクトを作成するときにさまざまなタスクを実行します。 Robert Korulczykのおかげで、 composer install



でタスクを実行できるようになりました。これは、新しいcopyFiles



メソッドを使用してコピーできるローカル構成ファイルの処理に特に重要です。 READMEで詳細を読むことができます。







また、 yiisoft/yii2



パッケージを更新すると、プラグインはUPGRADE.mdからの重要な変更を通知し始めました。







署名済みのコミットとタグ



これは、署名されたGPGタグを使用した最初のリリースです。これにより、Yiiチームによって作成されたことを確認できます。 後で詳細な検証手順を公開します。







GitHubでは、署名されたタグは「検証済み」という碑文で区別できます: https : //github.com/yiisoft/yii2-framework/releases/tag/2.0.11








All Articles