Yii 2.0.8

PHPバージョン2.0.8 Yiiがリリースされました。 更新とインストールの手順はページにあります
http://www.yiiframework.com/download/


バージョン2.0.8には、64の作成者からの 約100のマイナーな修正と改善 、合計300のコミットが含まれ、150のファイルに影響します。


更新には追加の手順が必要になる場合があるため、 UPGRADE.mdを使用する必要があります。


素晴らしいアイデアとプルリクエストをいただいた素晴らしいコミュニティに感謝します。 このリリースはあなたのおかげでした!


GitHubでフレームワーク開発プロセスをフォローできます 。 また、 Twitterを購読し、 Facebookのグループに参加してください。


以下では、このリリースで最も興味深い変更を検討します。 変更の完全なリストはCHANGELOGにあります。


PHP 7互換


Yii 2.0.8はこのトピックに関するいくつかの修正を受けました。 1つは一般的なエラー処理に関するもので、2つ目はJSONエラー処理に関するものです。


ご存知のように、今年はPHP 7が一般的になります。これは、このバージョンが新しいUbuntu LTSパッケージで利用できるためです。


データベースとActiveRecord


Yii 1.1からGridViewのプロバイダーをフィルタリングする方法は、Yii 2.0ではyii\db\Query::andFilterCompare()として登場しました。


ドキュメントは熟しませんでした 。 私たちは喜んでそれを書くのを手伝います。


ActiveRecordは、モデルがデータベースからデータを更新した後、 EVENT_AFTER_REFRESHを呼び出すEVENT_AFTER_REFRESHになりました。


スキームと移行


コミュニティのおかげで、このリリースには、移行で一般的に使用されるデータベーススキーマビルダーの改善が含まれています。


まず、コメントをテーブルと列に追加できるようになりました。 列を定義するとき、これは次のように行われます。


 'title' => $this->string()->notNull()->comment('Hello, I am the title!'), 

次のように個別のメソッドを使用できます。


 $this->addCommentOnTable('user', 'This is a table comment.'); $this->addCommentOnColumn('user', 'name', 'This is a column comment.'); $this->dropCommentFromColumn('user', 'name'); $this->dropCommentFromTable('user'); 

作成された列の順序を設定することが可能になりました。


 $this->string()->notNull()->first(); $this->string()->notNull()->after('anotherColumn'); 

署名されていない主キーを宣言する方がはるかに$this->primaryKey()->unsigned()$this->primaryKey()->unsigned()


コンソールコマンド./yii migrate/createも少し改善されました。 最初に、 useTablePrefixオプションがuseTablePrefixtrueに設定すると、テーブルプレフィックスを含むコードが生成されます。


次に、-- --fields使用して外部キーを生成できます。


 yii migrate/create create_post --fields="author_id:integer:notNull:foreignKey(user),category_id:integer:defaultValue(1):foreignKey,title:string,body:text" 

フォームと検証


ファイルをアップロードするために必要なenctypeをフォームに尋ねることを忘れたことはありませんか? もう忘れません。 Yiiは、アクティブフォームでfileInputが使用されている場合、自動的に追加します。


検証ルールでは、フィールドを検証できるようになりましたが、同時に名前の先頭に感嘆符を追加することにより、一括割り当てにアクセスできなくなりました。


FileValidatorを使用する場合、ワイルドカードパターンを使用してmimeTypesを指定できます。 たとえば、 image/*は、 image/image/jpegimage/pngなど)で始まるすべてのタイプを意味します。


DateValidatorは、さらに多くの時間形式を検証することを学びました。 $ typeプロパティTYPE_DATETIMEまたはTYPE_TIMEして、短いintl形式を検証できるようになりました。


安全性


トムワースターの研究とそれに続く生産的な議論のおかげで、セキュリティコンポーネントが改善されました。



変更は重要ではないため、2.0.8 headlongへのアップグレードは必要ありません。


コンポーネントのテストも再設計されたため、使用可能な拡張機能が異なるさまざまなシステムのカバレッジが大幅に改善されました。


コンソールコマンド


既存のオプションに加えて、ほとんどのオプションで短いフラグエイリアスを使用できるようになりました。 たとえば、移行を作成するときに、次を使用できます。


 ./yii migrate/create -p=@app/modules/somemodule/migrations -t=module_migrations new_migration 

の代わりに


 ./yii migrate/create --migrationPath=@app/modules/somemodule/migrations --migrationTable=module_migrations new_migration 

独自のコントローラーでは、 yii\console\Controller::optionAliases()メソッドをオーバーライドすることでこれを実装できます。


構成内の匿名関数への依存性注入


構成で使用されるクロージャーに依存関係が自動的に挿入されるようになりました。


  'components' => [ 'pheanstalk' => function(yii\web\User $user) { $result = new \Pheanstalk\Pheanstalk('localhost'); $result->watch($user->getId()); return $result; }, // ... 

PostgreSQLミューテックス


PostgreSQL用のMutexの実装が登場しました。 このDBMSを使用する場合、ブロッキングを実装するための別のオプションがあります。


高度なプロジェクトテンプレート


高度なプロジェクトテンプレートに、vagrantの構成が表示され、作業環境をすばやく上げることができます。
詳細については、ドキュメントを参照してください



Source: https://habr.com/ru/post/J282724/


All Articles