Yii 2.0.3

予定通りに、PHP Yiiフレームワークバージョン2.0.3のリリースがリリースされました。 更新とインストールの手順は、 http: //www.yiiframework.com/download/で説明されています



このバージョンには、約50の改善と修正が含まれています。 完全なリストはGitHub表示できます。 チームはこの機会に私たちを助けてくれたみんなに感謝します



ドキュメントを改善し、多くの言語に翻訳してくださった方々に感謝します。



GitHubでフレームワークの開発プロセスをフォローするには、プロジェクトにアスタリスクを付けるか、監視ボタンを使用します。 TwitterFacebookを購読してください



以下では、このバージョンの最も重要な改善点を検討します。







暗号化





これは内部的なものですが、かなり深刻な変更です。 yii\base\Security



yii\base\Security



Mcrypt(これは8年間廃止されました)をOpenSSLに置き換えました。Yiiのyii\base\Security



面倒を見るTom Worsterに感謝する価値があります。 OpenSSLはほとんどのPHPディストリビューションにデフォルトで存在するため、互換性の問題は発生しません。 しかし、もしあれば、私に知らせてください。



RBACキャッシング





RBACデータをデータベースに保存すると、パフォーマンスが理想的ではないことに気付くかもしれません。各チェックの結果、かなり多くのSQLクエリが発生します。 これを修正するために、キャッシュをyii\rbac\DbManager



。 階層全体がキャッシュに保存されるため、 checkAccess()



パフォーマンスが大幅に向上します。 デフォルトでは、RBACキャッシングは無効になっています。 次のように含まれています。



 return [ 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', 'cache' => 'cache', // <----   ], 'cache' => [ 'class' => 'yii\caching\ApcCache', ] // ... ], ]
      
      







ページキャッシュ





以前は、 ページキャッシュは HTMLのみ制限されていました。 無効なHTTPヘッダーのため、REST APIで機能しませんでした。 これで、 yii\filters\PageCache



を使用して、さまざまなデータ型とヘッダーをキャッシュできます。 これは、RESTコントローラーのindex



アクションをキャッシュする方法です。



 public function behaviors() { return [ [ 'class' => 'yii\filters\PageCache', 'only' => ['index'], 'duration' => 60, ], ]; }
      
      







新鮮なリソースの強制ダウンロード





キャッシュのもう1つの改善点は、新鮮なリソースの強制読み込みのサポートです。これは、JSファイルまたはCSSファイルのHTTPキャッシュが有効になっている場合に運用サーバーでしばしば役立ちます。 この場合、リソースファイルに変更を加えても、クライアントはキャッシュから古いバージョンを取得する場合があります。 これで、 yii\web\AssetManager::appendTimestamp



をtrueに設定できます。 ファイルの変更時間はJSおよびCSSリソースURLに追加されるため、クライアントは常に最新バージョンを取得します。



 return [ 'components' => [ 'assetManager' => [ 'class' => 'yii\web\AssetManager', 'appendTimestamp' => true, ], // ... ], ]
      
      







現在のURLへの変更





新しいメソッドが追加されましたyii\helpers\Url::current()



、GETパラメーターを追加または削除することで現在のURLを簡単に変更できます。



 // , $_GET = ['id' => 123, 'src' => 'google'],   "post/view" // /index.php?r=post/view&id=123&src=google echo Url::current(); // /index.php?r=post/view&id=123 echo Url::current(['src' => null]); // /index.php?r=post/view&id=100&src=google echo Url::current(['id' => 100]);
      
      







ログローテーションをオフにする





yii\log\FileTarget



を介してファイルにログを書き込む場合、自動ファイルローテーションを無効にできるようになりました。これは、追加のユーティリティがこれを行う場合に便利です。



 return [ 'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'enableRotation' => false, ], ], ], ], ];
      
      







データ属性





yii\helpers\Html



を使用する場合、 data



属性は特別な方法で処理されます:



 // : <div data-name="xyz" data-age="20"></div> echo Html::tag('div', '', ['data' => ['name' => 'xyz', 'age' => 20]]);
      
      







ng



data-ng



も処理されるようになりました。 これは主に、AngularJSで作業する人に役立ちます。 他の属性の場合、配列はJSONに変換されます。



yii\helpers\Html::$dataAttributes



追加することにより、特別な方法で処理する属性を指定できます。



入力クロッピング





trim



検証ルールを使用すると、クライアント上でプルーニングが実行されるようになります。 この検証動作を無効にするには、 trim



検証ルールのenableClientValidation



プロパティをfalseに設定します。



最大フィールド長





yii\helpers\Html::activeTextInput()



またはyii\widgets\ActiveField::textInput()



を使用して入力フィールドを作成する場合、 maxlength



プロパティを設定する必要があります。 対応するモデルフィールドにstring



検証ルールがある場合、そこからmaxlength



を取得できます。 これを行うには、 maxlength



をtrueに設定する必要があります。



 //  "name"   : ['name', 'string', 'max' => 128] // generates: <input type="text" ... maxlength="128"> echo Html::activeTextInput($model, 'name', ['maxlength' => true]);
      
      







設定可能なオブジェクト





これで、新しいyii\base\Configurable



インターフェースを使用して、クラスを「構成可能」としてマークできます。 この場合、 yii\di\Container



は、コンストラクターが構成配列を受け入れることを想定しています。



 class Foo implements \yii\base\Configurable { public function __construct($a, $b, $config = []) { } } $container = new \yii\di\Container; $object = $container->get('Foo', [1, 2], ['prop1' => 3]); // : $object = new Foo(1, 2, ['prop1' => 3]);
      
      







以前は、同様の効果を得るためにyii\base\Object



から継承する必要がありました。



All Articles