yii 組件如何自定義

yii 組件如何自定義

下面是YII2.0如何創建一個自定義組件的實例

第一步:在common下創建components文件夾。

第二步: 在新建的components文件夾中創建一個自定義組件,比如:ReadHttpHeader.php,代碼如下:

namespace?commoncomponents; ? use?Yii; use?yiibaseComponent; ? class?ReadHttpHeader?extends?Component?{ ? ????public??function?RealIP() ????{ ????????$ip?=?false; ? ????????$seq?=?array('HTTP_CLIENT_IP', ??????????????????'HTTP_X_FORWARDED_FOR' ??????????????????,?'HTTP_X_FORWARDED' ??????????????????,?'HTTP_X_CLUSTER_CLIENT_IP' ??????????????????,?'HTTP_FORWARDED_FOR' ??????????????????,?'HTTP_FORWARDED' ??????????????????,?'REMOTE_ADDR'); ? ????????foreach?($seq?as?$key)?{ ????????????if?(array_key_exists($key,?$_SERVER)?===?true)?{ ????????????????foreach?(explode(',',?$_SERVER[$key])?as?$ip)?{ ????????????????????if?(filter_var($ip,?FILTER_VALIDATE_IP)?!==?false)?{ ????????????????????????return?$ip; ????????????????????} ????????????????} ????????????} ????????} ????} ? }

注意: ‘common’ 已經在 common/config/bootstrap.php定義好了別名,可以直接使用。
第三步:打開common/config/main.php(main-local.php) 在配置文件中添加你的組件。

<?php   return [     &#39;components&#39; =>?[ ????????'ReadHttpHeader'?=&gt;?[ ????????????'class'?=&gt;?'commoncomponentsReadHttpHeader' ????????], ????], ];

第四步:現在我們的組件方法可以被所有控制器調用,比如我們現在在我們的基礎控制器(BaseController)中加載我們的組件ReadHttpHeader ,其他控制器都繼承我們的基礎控制器。

<?php   namespace frontendcontrollers;   use Yii; use yiiwebController;  class BaseController extends Controller {       protected $session = false;       public function actions() {         return [                   &#39;error&#39; =>?[ ????????????????????????????'class'?=&gt;?'yiiwebErrorAction', ??????????????????], ????????]; ????} ? ????public?function?init()?{ ? ????????parent::init(); ? ????????//?IP?essential?for?prelim?DDoS?check ????????if?(!$this-&gt;cgS('UC-SEC.1a'))?{ ????????????$ip?=?Yii::$app-&gt;ReadHttpHeader-&gt;RealIP(); ????????????echo?$ip; ????????} ????} ? }

上面就是一個獲取真實IP的自定義組件,以此為例說明一下自定義組件的流程。

PHP中文網,有大量免費的Yii入門教程,歡迎大家學習!

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享