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', ))?> 

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


All Articles