Yii 1.1.8

Yii 1.1.8 PHPフレームワークのリリースがリリースされ、80以上のバグ修正、新機能、改善が含まれています。 バグを報告し、新機能を提案し、yiiframework.ruでOrphus意図したとおりに使用してくれた人に感謝します。



公式サイトから最新のディストリビューションを入手できます



アップグレード手順は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', ))?>
      
      






All Articles