このバージョンでは、約100のエラーが修正され、200以上の改善が行われ、新しい機能が追加されました。 これは、 ベータから数えて5か月間の集中的な開発の結果です。 この間、フレームワークコミュニティは積極的に支援してくれました。 Yiiを助けてくれて 、このリリースがなければ誰も助けてくれなかったみんなに感謝します。 あなたは最高です!
よくある質問
- 2.0 RCとはどういう意味ですか? RCは、Release Candidate、つまり、安定したGA(General Availability)の前の最後のリリースを意味します。 彼は主に、マイナーな問題とドキュメントの編集を残されました。
- 安定版リリースはいつですか? それはすべて、RCの問題に依存します。 予備計画は、約2週間で安定したリリースを作成することです。 もちろん、RCが非常に安定していることが判明した場合。
- プロジェクトでRCを使用できますか? はい 新しいプロジェクトで試してみることを強くお勧めします。エラーメッセージとフィードバックのみに感謝します。 間もなく安定版がリリースされるため、バトルサーバーでRCを使用することはお勧めしません。
- 2.0のドキュメントはありますか? はい、 完全なガイドは、最も包括的な2.0 ドキュメントおよびAPIドキュメントであり、個々のフレームワーククラスの使用に役立つリファレンスガイドです。
- 1.1から2.0にアップグレードする方法は? Yii 1.1からのアップグレードをお読みください。 2.0は完全に書き直されており、更新は簡単ではないことに注意してください。 1.1アプリケーションが正常かつ安定して動作する場合は、もちろんアップグレードのための追加の時間とリソースがない限り、1.1の使用を継続することをお勧めします。
- ベータまたはアルファ2.0からアップグレードする方法 UPGRADEの指示を読んでください。
- 開発2.0をフォローする方法は? すべての開発はGitHubで行われます: github.com/yiisoft/yii2 変更に関する情報を受け取るために、プロジェクトにアスタリスクを付けることができます。 twitter twitter.com/yiiframeworkに登録して、Facebookグループに参加することもできます。
2.0 RCの大幅な改善
このリリースには、多数の便利な変更と改善があります。 以下に最も重要なものについて説明します。 変更の完全なリストはCHANGELOGにあります。 フレームワーク全般を知りたい場合は、 完全なマニュアルをお読みください。
安全性
Tom WorsterやAnthony Ferraraを含むいくつかのセキュリティの専門家は、フレームワークコードのチェックを支援し、多くのコメントと提案を提供してくれました。 トムはコードの一部を書き直し、キー生成の改善、より強力な暗号化の使用、タイミング攻撃やその他の多くの種類の攻撃からの保護を可能にしました。
より便利な構成のために、
Security
ヘルパーは
security
アプリケーションのコンポーネントになりました。 その結果、
Yii::$app->security->encrypt()
としてアクセスできます。
さらに、いくつかの小さいが安全に関連する変更が行われました。 たとえば、デフォルトですべてのCookieに対して
httpOnly
有効になり、
yii\web\Request::enableCsrfCookie
を
false
設定すると、Cookieの代わりにCSRFトークンをセッションに保存でき
false
。
データベースを操作する
レプリケーションと読み取り/書き込み共有
コアフレームワークによって、読み取りと書き込みの分割とレプリケーションがサポートされるようになりました。 複製中、データはマスターサーバーからサーバースレーブに複製されます 。 すべての記録と更新はマスターサーバーで実行する必要があり、読み取りはスレーブサーバーから実行できます。 この機能を使用するには、次のようにデータベース接続を構成します。
[ 'class' => 'yii\db\Connection', // master 'dsn' => 'dsn for master server', 'username' => 'master', 'password' => '', // slave- 'slaveConfig' => [ 'username' => 'slave', 'password' => '', ], // slave- 'slaves' => [ ['dsn' => 'dsn slave 1'], ['dsn' => 'dsn slave 2'], ['dsn' => 'dsn slave 3'], ], ]
この構成では、以前と同じようにコードを記述できます。 要求がデータを選択すると、スレーブの1つが自動的に使用されます(サーバーの選択には単純な負荷分散アルゴリズムが使用されます)。 クエリがデータを更新または挿入する場合、マスターが使用されます。
取引
トランザクションのトピックに対していくつかの機能強化が行われました。
まず、コールバックのスタイルでトランザクションを操作できます。
$connection->transaction(function() { $order = new Order($customer); $order->save(); $order->addItems($items); });
これは長いコードと同等です:
$transaction = $connection->beginTransaction(); try { $order = new Order($customer); $order->save(); $order->addItems($items); $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); throw $e; }
第二に、トランザクションはいくつかのイベントをトリガーします。 たとえば、新しいトランザクションが
commitTransaction
ときにデータベースに接続する
beginTransaction
イベント
beginTransaction
発生し、
commitTransaction
が成功
commitTransaction
と
commitTransaction
が発生します。 これらのイベントは、さまざまな前処理および後処理に使用できます。
最後に、開始時にトランザクション分離レベル(
READ COMMITTED
)を指定できます。
$transaction = $connection->beginTransaction(Transaction::READ_COMMITTED);
クエリ構築
クエリを作成するときに、任意の演算子を使用できるようになりました。 以下の例では、条件
age >= 30
に対して、
>=
演算子が使用されます。 Yiiはフィールド名を適切にエスケープし、値にパラメーターバインディングを使用します。
$query = new \yii\db\Query; $query->where(['>=', 'age', 30]);
構築
in
かどうかにかかわら
not
サブクエリを使用できます。
$subquery = (new \yii\db\Query) ->select('id') ->from('user') ->where(['>=', 'age', 30]); // , 30 $orders = (new \yii\db\Query) ->from('order') ->where(['in', 'customer_id', $subquery]) ->all();
リソース管理
Yiiは、素晴らしいComposer Asset Pluginを使用してComposer経由でBowerおよびNPMパッケージ、つまりjQuery、jQuery UI、Bootstrapを使用します。
この変更のため、Yiiを使用する前にプラグインを1回インストールする必要があります。
php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta2"
これで、次のコマンドを使用して、
vendor
ディレクトリにBower jQueryパッケージをインストールできます。
php composer.phar require bower-asset/jquery:2.1.*
完全なガイドでリソースの詳細をお読みください 。
データのフォーマット
yii\base\Formatter
および
yii\i18n\Formatter
を大幅にリファクタリングしました。 これで
yii\i18n\Formatter
クラスが1つだけになりました。 新しいフォーマッタは、PHPサーバー上のintl拡張の存在に関係なく、単一のインターフェースを提供します。 拡張機能がインストールされていない場合、フォーマットはフレームワークを使用して行われ、国際化はサポートされません。
また、日付と時刻の形式を標準化しました。 現在、主にICU形式が使用されています。 DateValidatorやJUI
DatePicker
などのクラスは、デフォルトでこの形式を使用します。 PHP形式は、
php:
プレフィックスを介して使用できます。
$formatter = Yii::$app->formatter; $value = time(); echo $formatter->asDate($value, 'MM/dd/yyyy'); // date('m/d/Y', $value) echo $formatter->asDate($value, 'php:Y/m/d'); // date('Y/m/d', $value) echo $formatter->asDate($value, 'long'); // date('F j, Y', $value)
フォーム
ActiveForm
JavaScriptコンポーネントも改善されています。
コールバックを使用する代わりに、検証イベントが発生するようになりました。 それらの使用は非常に簡単です。
$('#myform').on('beforeValidate', function (event, messages, deferreds) { // submit. // . }); $('#myform').on('beforeSubmit', function () { // . // AJAX. false , . });
遅延検証もサポートされています。 上記の例では、
beforeValidate
イベントの
deferreds
パラメーターを使用して、新しいDeferredオブジェクトを追加できます。
FileValidator
と
ImageValidator
は、遅延検証のおかげでクライアント検証をサポートする
FileValidator
なり
ImageValidator
。
ActiveForm
JavaScriptコードの一部のメソッドはAPIの一部になっています。これにより、クライアント側で追加されたフィールドの検証をサポートする動的フォームを簡単に作成できます。 たとえば、次のJavaScriptコードを使用して、追加した「アドレス」フィールドを検証できます。
$('#myform').yiiActiveForm('add', { 'id': 'address', 'name': 'address', 'container': '.field-address', 'input': '#address', 'error': '.field-address .help-block' });
ロギングとエラー処理
ロギング時に配列およびオブジェクトをデータとして使用できます。 フレームワークに含まれるすべてのログターゲットは、デフォルトで自動的にテキスト表現に変換します。 そのクラスでは、ログの目的はそのようなデータを特別な方法で処理できます。
InvalidCallException
、
InvalidParamException
、
UnknownMethodException
、SPLの
BadMethodCallException
から継承される
BadMethodCallException
になり、例外の階層がより論理的になりました。
例外を表示するときに、メソッド引数がスタックトレースに表示されるようになりました。
開発者ツール
Yiiデバッガーは、アプリケーションの進行状況に関する詳細情報を表示する非常に便利なツールです。 ロードされたリソースバンドルとそのコンテンツを表示する新しいパネルを追加しました。
Giiコードジェネレーターをコンソールから使用できるようになりました。 以前は、Webインターフェイスのみが提供されていましたが、これは非常に直感的ですが、ハードコアコンソールには好まれません。 今、誰もが幸せでなければなりません。 さらに、ジェネレーターのコードは変更されていません。 独自のジェネレータを作成する場合、二重の作業を行う必要はありません。コンソールとWebの両方で同じコードが使用されます。
コンソールでGiiを試すには、次のコマンドを実行します。
# cd path/to/AppBasePath # Gii yii help gii # yii help gii/model # City city yii gii/model --tableName=city --modelClass=City
行動
新しい動作
yii\behaviors\SluggableBehavior
を追加しました。これにより、モデルの特定の属性に、URLですぐに使用できる文字列の文字変換バージョンを追加できます。 次のように使用できます。
use yii\behaviors\SluggableBehavior; public function behaviors() { return [ [ 'class' => SluggableBehavior::className(), 'attribute' => 'title', // 'slugAttribute' => 'alias', // URL ( slug) "alias" // 'ensureUnique' => true, // slug- ], ]; }
行動は匿名で参加できるようになりました。
$component->attachBehaviors([ 'myBehavior1' => new MyBehavior, // MyBehavior::className(), // ]);
テンプレートエンジン
SmartyおよびTwig拡張機能が大幅に改善されました。 それぞれについて、特別な構文がYiiの多くの機能に導入されました。レビューによって判断すると、通常のPHPテンプレートと同じくらい効果的にSmartyとTwigを操作できます。 新しい構文の詳細については、 マニュアル全体を参照してください。
ロシア語のドキュメント
ドキュメントの一部はロシア語に翻訳されていますが、翻訳オプションは最終的なものではなく、GitHubから直接読むことも、 自分でHTMLを生成 して読むこともできます 。 どうもありがとう
翻訳に直接参加したロシア語圏のコミュニティ 。