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; } } } } } }
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 [ 'components' => [ 'ReadHttpHeader' => [ 'class' => 'common\components\ReadHttpHeader' ], ], ];
É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 [ '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; } } }
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!