ホームページ  >  記事  >  PHPフレームワーク  >  yii コンポーネントをカスタマイズする方法

yii コンポーネントをカスタマイズする方法

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-12-07 17:56:282328ブラウズ

yii コンポーネントをカスタマイズする方法

#Yii2.0 でカスタムコンポーネントを作成する方法の例を以下に示します。

最初のステップ:共通の [コンポーネントの作成] フォルダーの下にあります。

ステップ 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: これで、すべてのコントローラーからコンポーネント メソッドを呼び出すことができます。たとえば、コンポーネント ReadHttpHeader をベース コントローラー (BaseController) にロードし、他のコントローラーはそれを継承します。 。

<?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 中国語 Web サイトには、無料の

Yii 入門チュートリアル が多数あり、誰でも学習することができます。

以上がyii コンポーネントをカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。