亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

YII Framework的filter過濾器用法分析

2024-05-04 23:44:43
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了YII Framework的filter過濾器用法,結合實例形式分析了filter過濾器的功能,使用技巧與相關注意事項,需要的朋友可以參考下
 

本文實例講述了YII Framework的filter過濾器用法。分享給大家供大家參考,具體如下:

首先看官方給出的說明文檔,什么是過濾器,過濾器的作用,過濾器的規則,過濾器的定義方法等等。

然后對過濾器進行一個總結。

http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.controller

過濾器是一段代碼,可被配置在控制器動作執行之前或之后執行。例如, 訪問控制過濾器將被執行以確保在執行請求的動作之前用戶已通過身份驗證;性能過濾器可用于測量控制器執行所用的時間。

一個動作可以有多個過濾器。過濾器執行順序為它們出現在過濾器列表中的順序。過濾器可以阻止動作及后面其他過濾器的執行

過濾器可以定義為一個控制器類的方法。方法名必須以 filter 開頭。例如,現有的 filterAccessControl 方法定義了一個名為 accessControl 的過濾器。 過濾器方法必須為如下結構:

public function filterAccessControl($filterChain){  // 調用 $filterChain->run() 以繼續后續過濾器與動作的執行。}

其中的 $filterChain (過濾器鏈)是一個 CFilterChain 的實例,代表與所請求動作相關的過濾器列表。在過濾器方法中, 我們可以調用 $filterChain->run() 以繼續執行后續過濾器和動作。

過濾器也可以是一個 CFilter 或其子類的實例。如下代碼定義了一個新的過濾器類:

class PerformanceFilter extends CFilter{  protected function preFilter($filterChain)  {    // 動作被執行之前應用的邏輯    return true; // 如果動作不應被執行,此處返回 false  }  protected function postFilter($filterChain)  {    // 動作執行之后應用的邏輯  }}

要對動作應用過濾器,我們需要覆蓋 CController::filters() 方法。此方法應返回一個過濾器配置數組。例如:

class PostController extends CController{  ......  public function filters()  {    return array(      'postOnly + edit, create',      array(        'application.filters.PerformanceFilter - edit, create',        'unit'=>'second',      ),    );  }}

上述代碼指定了兩個過濾器: postOnly 和 PerformanceFilter。 postOnly 過濾器是基于方法的(相應的過濾器方法已在 CController 中定義); 而 performanceFilter 過濾器是基于對象的。路徑別名application.filters.PerformanceFilter 指定過濾器類文件是protected/filters/PerformanceFilter。我們使用一個數組配置 PerformanceFilter ,這樣它就可被用于初始化過濾器對象的屬性值。此處 PerformanceFilter 的 unit 屬性值將被初始為 second。

使用加減號,我們可指定哪些動作應該或不應該應用過濾器。上述代碼中, postOnly 應只被應用于 edit 和create 動作,而 PerformanceFilter 應被應用于 除了 edit 和 create 之外的動作。 如果過濾器配置中沒有使用加減號,則此過濾器將被應用于所有動作。

過濾器功能:

用于對訪問者和數據的過濾和對訪問操作的記錄

使用方法:

一作為controller的一個方法。方法名以filter開頭。

public function filterAccessControl($filterChain){ echo "--->filterAccessControl";  $filterChain->run();}

二定義對立的filter類,要求extends CFilter。

CFilter

<?php /**  * CFilter is the base class for all filters.  *  * A filter can be applied before and after an action is executed.  * It can modify the context that the action is to run or decorate the result that the  * action generates.  *  * Override {@link preFilter()} to specify the filtering logic that should be applied  * before the action, and {@link postFilter()} for filtering logic after the action.  *  * @author Qiang Xue <qiang.xue@gmail.com>  * @version $Id: CFilter.php 2799 2011-01-01 19:31:13Z qiang.xue $  * @package system.web.filters  * @since 1.0  */ class CFilter extends CComponent implements IFilter {   /**    * Performs the filtering.    * The default implementation is to invoke {@link preFilter}    * and {@link postFilter} which are meant to be overridden    * child classes. If a child class needs to override this method,    * make sure it calls <code>$filterChain->run()</code>    * if the action should be executed.    * @param CFilterChain $filterChain the filter chain that the filter is on.    */   public function filter($filterChain)   {     if($this->preFilter($filterChain))     {       $filterChain->run();       $this->postFilter($filterChain);     }   }   /**    * Initializes the filter.    * This method is invoked after the filter properties are initialized    * and before {@link preFilter} is called.    * You may override this method to include some initialization logic.    * @since 1.1.4    */   public function init()   {   }   /**    * Performs the pre-action filtering.    * @param CFilterChain $filterChain the filter chain that the filter is on.    * @return boolean whether the filtering process should continue and the action    * should be executed.    */   protected function preFilter($filterChain)   {     return true;   }   /**    * Performs the post-action filtering.    * @param CFilterChain $filterChain the filter chain that the filter is on.    */   protected function postFilter($filterChain)   {   } }

下面舉例說明兩種filter規則的使用:

SiteController.php

<?php class SiteController extends Controller {   public function init()   {     //$this->layout='mylayout';   }   public function filters()     {       return array(         'AccessControl - create',         array(           'application.filters.MyFilter + create',         ),       );   }   public function filterAccessControl($filterChain)   {           echo "--->filterAccessControl";       $filterChain->run();   }   public function actionCreate() {     echo "--->create action";   }   public function actionPrint() {     echo "--->print action";   } 

/www/yii_dev/testwebap/protected# tree 
.
├── commands
│   ├── shell
│   ├── TestCommand.php
│   └── TestCommand.php~
├── components
│   ├── Controller.php
│   └── UserIdentity.php
├── config
│   ├── console.php
│   ├── main.php
│   └── test.php
├── controllers
│   ├── post
│   │   └── UpdateAction.php
│   ├── SiteController.php
│   ├── TestTestController.php
│   └── UserController.php
├── filters
│   └── MyFilter.php
 MyFilter.php

<?php class MyFilter extends CFilter {   protected function preFilter ($filterChain)   {     // logic being applied before the action is executed         echo "-->MyFilter-->pre";     return true; // false if the action should not be executed   }   protected function postFilter ($filterChain)   {     echo "-->MyFilter-->post";   } } 

http://www.localyii.com/testwebap/index.php?r=site/print

--->filterAccessControl--->print action

http://www.localyii.com/testwebap/index.php?r=site/create

-->MyFilter-->pre--->create action-->MyFilter-->post

public function filters(){  return array(    'AccessControl - create',    array(      'application.filters.MyFilter + create,print',    ),  );}

http://www.localyii.com/testwebap/index.php?r=site/print
--->filterAccessControl-->MyFilter-->pre--->print action-->MyFilter-->post

以上可以看到filter的具體執行流程。

在filters中有-、+
具體功能是
+表示僅僅作用于這一些action
-后邊跟action名稱列表。表示排除在外。
如果沒有-、+則會應用的所有的action



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色哟哟网站入口亚洲精品| 国产午夜精品一区理论片飘花| 亚洲天堂av高清| 欧美高跟鞋交xxxxhd| 国产精品成人一区| 国产欧美一区二区三区四区| 久99九色视频在线观看| 国产精品国产自产拍高清av水多| 国产一区二区黄| 91精品国产乱码久久久久久蜜臀| 欧美日韩免费网站| 亚洲а∨天堂久久精品喷水| 国产日韩欧美在线视频观看| 色综合久久88| 日韩精品极品在线观看| 欧美在线视频a| 欧美性资源免费| 欧美电影《睫毛膏》| 久久久www成人免费精品| 精品国产福利视频| 午夜精品久久久久久99热软件| 亚洲综合精品伊人久久| 亚洲精品美女在线观看播放| 国产精品久久久久久久久借妻| 中文一区二区视频| 视频一区视频二区国产精品| 色婷婷亚洲mv天堂mv在影片| 日韩免费在线播放| 日本免费久久高清视频| 国产精品美女www爽爽爽视频| 国产一区二区三区精品久久久| 国产又爽又黄的激情精品视频| 国产精品成人免费电影| 不卡中文字幕av| 97久久久免费福利网址| 中文亚洲视频在线| 国产成人短视频| 国产精品美女午夜av| 亚洲最新视频在线| 九九热精品视频在线播放| 欧美一区三区三区高中清蜜桃| 川上优av一区二区线观看| 欧美激情va永久在线播放| 成人在线中文字幕| 国产精品成人一区二区三区吃奶| 视频一区视频二区国产精品| 亚洲在线视频观看| 亚洲国产一区二区三区在线观看| 亚洲第一免费网站| 国产精品视频精品| 91九色精品视频| 国产精品亚发布| 日韩av手机在线观看| 91精品国产精品| 黑人巨大精品欧美一区二区三区| 精品日韩美女的视频高清| 中文在线资源观看视频网站免费不卡| 国产一区二区三区视频免费| 国产在线久久久| 亚洲精品小视频| 韩国福利视频一区| 精品久久久久久中文字幕| 久久久久国产精品www| 97不卡在线视频| 精品少妇一区二区30p| 欧美激情乱人伦| 久久久成人av| 久久中文字幕在线| 久久久久久久久综合| 欧美精品日韩三级| 精品视频在线导航| 久久精品国亚洲| 久久影视电视剧免费网站清宫辞电视| 国产精品久久久久久久久久三级| 91免费看国产| 色综合色综合网色综合| 亚洲大胆美女视频| 国产精品爽爽爽| 亚洲国产精品久久久久| 都市激情亚洲色图| 欧美成人中文字幕在线| 日韩美女中文字幕| 亚洲网站在线看| 亚洲视频在线免费观看| 欧美激情亚洲自拍| 亚洲精品一区二区网址| 91精品国产自产在线观看永久| 国产精品自产拍高潮在线观看| 亚洲91精品在线| 2019中文字幕在线免费观看| 一区二区在线视频播放| 日韩中文字幕网站| 欧美高清videos高潮hd| 国产99久久精品一区二区| 亚洲黄色片网站| 国产日韩欧美在线播放| 欧美成人小视频| 欧美日韩一区二区免费在线观看| 欧美一级电影免费在线观看| 欧美精品在线观看| 成人精品久久av网站| 亚洲美女激情视频| 国产日本欧美一区二区三区| 狠狠干狠狠久久| 久久频这里精品99香蕉| 亚洲精品视频播放| 国产精品久久久久久久久免费| 欧美美最猛性xxxxxx| 亚洲国产精品久久久久秋霞蜜臀| 亚洲欧美色婷婷| 92福利视频午夜1000合集在线观看| 日韩av网址在线| 最近日韩中文字幕中文| 亚洲精品日韩欧美| 久久成人精品一区二区三区| 久久精品国产亚洲7777| 视频直播国产精品| 久久综合国产精品台湾中文娱乐网| 国产91在线播放九色快色| 青青久久av北条麻妃黑人| 国语自产精品视频在线看抢先版图片| 久热精品视频在线免费观看| 亚洲黄色www| 精品少妇v888av| 日韩免费av片在线观看| 亚洲国产精品悠悠久久琪琪| 亚洲九九九在线观看| 日韩最新免费不卡| 欧美视频中文在线看| 国产在线精品自拍| 欧美精品免费在线观看| 国产在线观看不卡| 久久久欧美精品| 欧美在线视频免费| 日韩专区中文字幕| 日本韩国在线不卡| 国产精品人成电影在线观看| 亚洲欧美日韩一区在线| 国产精品入口福利| 欧美www视频在线观看| 欧美视频精品一区| 播播国产欧美激情| 久久久久久综合网天天| 国产成人小视频在线观看| 97在线观看免费高清| 亚洲精品99久久久久中文字幕| 欧美成人精品激情在线观看| 欧美小视频在线| 亚洲成色777777女色窝| 亚洲精品福利免费在线观看| 国产一级揄自揄精品视频| 亚洲国产美女精品久久久久∴| 国产精品小说在线| 91亚洲国产成人精品性色| 社区色欧美激情 | 欧美精品手机在线| 亚洲国产成人一区| 亚洲天堂精品在线| 欧美性猛交xxxx乱大交| 亚洲第一区在线| 成人网欧美在线视频| 亚洲成人精品久久久| 91久久久久久久久久久| 成人网在线免费看|