公式サイトから最新のディストリビューションを入手できます 。
アップグレード手順はUPGRADEにあります。
通常の変更の完全なリストはCHANGELOGで読むことができますが、最も興味深いものをすぐに見ていきます。
カスタムURLルールクラス
標準の
CUrlRule
クラスでは処理できないURLの複雑な作業(たとえば、URLの一部がデータベースの値に依存する場合)の場合、URLを処理する独自のクラスを記述し、
CUrlManager
構成で使用できます。
array( // '/login' → 'site/login' .. '<action:(login|logout|about)>' => 'site/<action>', // '//' array( 'class' => 'application.components.CarUrlRule', 'connectionID' => 'db', ), // 'post/update' '<controller:\w+>/<action:\w+>' => '<controller>/<action>', ),
クラス自体は
CBaseUrlRule
から継承され、次のようになります。
class CarUrlRule extends CBaseUrlRule { public $connectionID = 'db'; public function createUrl($manager,$route,$params,$ampersand) { if ($route==='car/index') { if (isset($params['manufacturer'], $params['model'])) return $params['manufacturer'] . '/' . $params['model']; else if (isset($params['manufacturer'])) return $params['manufacturer']; } return false; // } public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) { if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches)) { // $matches[1] $matches[3] // ? // , $_GET['manufacturer'] / $_GET['model'] // 'car/index' } return false; // } }
改善されたクラスオートローダー
Yiiには既に、必要に応じてそれらを接続するクラスローダーがあります。 現在では、サードパーティのブートローダーと競合せず、それらの前後で実行できます。 以前のバージョンでは、サードパーティのオートローダーの後に常に実行されていたため、Yiiクラスを使用するときに不必要な呼び出しが発生しました。
// Yii Yii::registerAutoloader($autoloader);
これで次のことができます。
// true Yii Yii::registerAutoloader($autoloader, true);
デフォルトでは、YiiオートローダーはPHPインクルードパスを使用します。 一部のホスティング会社にとって、これは
index.php
わずかに調整することで解決できる問題です。
require('path/to/yii.php'); // PHP include path Yii::$enableIncludePath = false; Yii::createWebApplication($config)->run();
リアルタイムロギング
一部のコンソールアプリケーションは、非常に長時間実行できます。 アプリケーションが完了するのを待たずに、すぐにログにメッセージを書き込むと便利です。
// Yii::getLogger()->autoFlush = 1; // Yii::getLogger()->autoDump = true;
ARを介してデータベース内のカウンターを処理します
既存の
CActiveRecord::updateCounters()
に似た新しい
saveCounters()
メソッドが
CActiveRecord
クラスに登場しました。 主な違いは、
saveCounters()
は現在のオブジェクトでのみ機能し、
updateCounters()
はテーブル全体で機能することです。
$post = Post::model()->findByPk(1); // $post->saveCounters(array('views'=>1)); // Post::model()->updateCounters(array('views'=>1), 'id=1');
翻訳ファイルの生成
yiic message
を使用する場合、古いファイルを削除して、近くで生成された新しいファイルと置き換える必要がありました。 コマンド構成で
overwrite
オプションを
true
に設定すると、すぐに古いファイルに書き込むことができます。
コンソールアプリケーションでURLを作成する
通常、Webアプリケーションは
CUrlManager
を使用してURLを生成しますが、これは以前はコンソールアプリケーションでは使用できませんでした。 これで、Webアプリケーションとコンソールアプリケーションの両方で
Yii::app()->createUrl()
使用できます。これは、たとえばWebアプリケーションのURLをリストするサイトマップを作成するのに非常に便利です。
クリップでオプションを使用できるようになりました
これは、ビュー内のコードが何度も繰り返される場合に便利ですが、別のファイルに移動するほど複雑ではありません。
<?php // clip ?> <?php $this->beginClip('hello')?> <p>, {username}!</p> <?php $this->endClip() ?> <?php // clip ?> <?php $this->renderClip('hello',array( '{username}'=>'Qiang', ))?> <?php $this->renderClip('hello',array( '{username}'=>'Alex', ))?> <?php $this->renderClip('hello',array( '{username}'=>'Michael', ))?>