Heim  >  Artikel  >  PHP-Framework  >  So passen Sie Yii-Komponenten an

So passen Sie Yii-Komponenten an

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-12-07 17:56:282328Durchsuche

So passen Sie Yii-Komponenten an

Das Folgende ist ein Beispiel für die Erstellung einer benutzerdefinierten Komponente in Yii2.0

Schritt 1: Unter Gemeinsamer Komponentenordner erstellen.

Schritt 2: Erstellen Sie eine benutzerdefinierte Komponente im neu erstellten Komponentenordner, z. B.: ReadHttpHeader.php. Der Code lautet wie folgt:

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;
                    }
                }
            }
        }
    }
 
}

Hinweis: „common“ ist bereits gemeinsam/ config/ Bootstrap.php verfügt über definierte Aliase und kann direkt verwendet werden.
Schritt 3: Öffnen Sie common/config/main.php (main-local.php) und fügen Sie Ihre Komponenten in die Konfigurationsdatei ein.

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

Schritt 4: Jetzt kann unsere Komponentenmethode von allen Controllern aufgerufen werden. Beispielsweise laden wir jetzt unsere Komponente ReadHttpHeader in unseren Basiscontroller und andere Controller erben sie .

<?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;
        }
    }
 
}

Das Obige ist eine benutzerdefinierte Komponente zum Erhalten der echten IP. Nehmen Sie dies als Beispiel, um den Prozess benutzerdefinierter Komponenten zu veranschaulichen.

PHP-Website für Chinesisch, es gibt viele kostenlose Yii-Einführungs-Tutorials, jeder ist willkommen, es zu lernen!

Das obige ist der detaillierte Inhalt vonSo passen Sie Yii-Komponenten an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn