Maison > cadre php > YII > Comment personnaliser les composants yii

Comment personnaliser les composants yii

爱喝马黛茶的安东尼
Libérer: 2019-12-07 17:56:28
original
2429 Les gens l'ont consulté

Comment personnaliser les composants yii

Ce qui suit est un exemple de la façon de créer un composant personnalisé dans Yii2.0

Étape 1 : Sous dossier commun Créer des composants.

Étape 2 : Créez un composant personnalisé dans le dossier des composants nouvellement créé, tel que : ReadHttpHeader.php, le code est le suivant :

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;
                    }
                }
            }
        }
    }
 
}
Copier après la connexion

Remarque : 'common' est déjà en common/ config/ Bootstrap.php a défini des alias et peut être utilisé directement.
Étape 3 : Ouvrez common/config/main.php (main-local.php) et ajoutez vos composants dans le fichier de configuration.

<?php
 
return [
    &#39;components&#39; => [
        &#39;ReadHttpHeader&#39; => [
            &#39;class&#39; => &#39;common\components\ReadHttpHeader&#39;
        ],
    ],
];
Copier après la connexion

Étape 4 : Maintenant, notre méthode de composant peut être appelée par tous les contrôleurs. Par exemple, nous chargeons maintenant notre composant ReadHttpHeader dans notre contrôleur de base (BaseController), et d'autres contrôleurs en héritent. .

<?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;
        }
    }
 
}
Copier après la connexion

Ce qui précède est un composant personnalisé pour obtenir la véritable adresse IP. Prenez ceci comme exemple pour illustrer le processus des composants personnalisés.

Le site Web PHP chinois propose un grand nombre de Tutoriels d'introduction Yii gratuits, tout le monde est invité à apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal