>PHP 프레임워크 >YII >yii 구성 요소를 사용자 정의하는 방법

yii 구성 요소를 사용자 정의하는 방법

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-12-07 17:56:282456검색

yii 구성 요소를 사용자 정의하는 방법

다음은 Yii2.0

에서 커스텀 컴포넌트를 생성하는 방법의 예입니다. 1단계: common 아래에 컴포넌트 폴더를 생성합니다.

2단계: 새로 생성된 구성 요소 폴더에 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에 정의된 별칭이 있습니다. 직접 사용할 수 있습니다.
3단계: common/config/main.php(main-local.php)를 열고 구성 파일에 구성 요소를 추가합니다.

<?php
 
return [
    &#39;components&#39; => [
        &#39;ReadHttpHeader&#39; => [
            &#39;class&#39; => &#39;common\components\ReadHttpHeader&#39;
        ],
    ],
];

4단계: 이제 모든 컨트롤러에서 구성 요소 메서드를 호출할 수 있습니다. 예를 들어 이제 기본 컨트롤러(BaseController)에 구성 요소 ReadHttpHeader를 로드하고 다른 컨트롤러는 기본 컨트롤러를 상속합니다.

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

위는 실제 IP를 획득하는 커스텀 컴포넌트입니다. 커스텀 컴포넌트의 프로세스를 설명하기 위해 이를 예로 들어 보겠습니다.

PHP 중국어 웹사이트에는 무료 Yii 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!

위 내용은 yii 구성 요소를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기