다음은 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 [ 'components' => [ 'ReadHttpHeader' => [ 'class' => 'common\components\ReadHttpHeader' ], ], ];
4단계: 이제 모든 컨트롤러에서 구성 요소 메서드를 호출할 수 있습니다. 예를 들어 이제 기본 컨트롤러(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를 획득하는 커스텀 컴포넌트입니다. 커스텀 컴포넌트의 프로세스를 설명하기 위해 이를 예로 들어 보겠습니다.
PHP 중국어 웹사이트에는 무료 Yii 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!
위 내용은 yii 구성 요소를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!