php自定义控件,Yii2.0 如何创建一个自定义组件

下面是Yii2.0如何创建一个自定义组件的实例

第一步:在common下创建components文件夹

第二步: 在新建的components文件夹中创建一个自定义组件 比如:ReadHttpHeader.php,代码如下namespace common\components;

use Yii;

use yii\base\Component;

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 [

'components' => [

'ReadHttpHeader' => [

'class' => 'common\components\ReadHttpHeader'

],

],

];

第四步:现在我们的组件方法可以被所有控制器调用,比如我们现在在我们的基础控制器(BaseController)中加载我们的组件ReadHttpHeader ,其他控制器都继承我们的基础控制器<?php

namespace frontend\controllers;

use Yii;

use yii\web\Controller;

class BaseController extends Controller {

protected $session = false;

public function actions() {

return [

'error' => [

'class' => 'yii\web\ErrorAction',

],

];

}

public function init() {

parent::init();

// IP essential for prelim DDoS check

if (!$this->cgS('UC-SEC.1a')) {

$ip = Yii::$app->ReadHttpHeader->RealIP();

echo $ip;

}

}

}

上面就是一个获取真实IP的自定义组件,以此为例说明一下自定义组件的流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值