Utilisez la fonction get_instance() dans votre bibliothèque de classes pour accéder Ressource native de CodeIgniter, cette fonction renvoie le super objet CodeIgniter.
Normalement, dans vos méthodes de contrôleur, vous utiliseriez $this pour appeler tous les disponibles Méthodes CodeIgniter :
$this->load->helper('url'); $this->load->library('session'); $this->config->item('base_url'); // etc.
Mais $this ne peut être utilisé que directement dans votre contrôleur, modèle ou vue, si vous voulez l'utiliser dans votre propre classe CodeIgniter, vous pouvez procéder comme suit :
Tout d'abord, affectez l'objet CodeIgniter à une variable :
$CI =& get_instance();
Une fois que vous avez attribué l'objet CodeIgniter à une variable, vous pouvez utilisez cette variable pour remplacer par $this
$CI =& get_instance(); $CI->load->helper('url'); $CI->load->library('session'); $CI->config->item('base_url'); // etc.
Remarque :
Vous verrez ci-dessus get_instance() Fonctions sont passés par référence :
$CI =& get_instance();
C'est très important, l'affectation de référence vous permet d'utiliser l'objet CodeIgniter d'origine au lieu de créer une copie.
Puisque la bibliothèque de classes est une classe, nous ferions mieux d'utiliser pleinement les principes de la POO. Par conséquent, afin de permettre à toutes les méthodes de la classe d'utiliser le super objet CodeIgniter. est recommandé de l'attribuer à Un attribut :
class Example_library { protected $CI; // We'll use a constructor, as you can't directly call a function // from a property definition. public function __construct() { // Assign the CodeIgniter super-object $this->CI =& get_instance(); } public function foo() { $this->CI->load->helper('url'); redirect(); } public function bar() { echo $this->CI->config->item('base_url'); } }
Recommandations associées :
002 - Différences et choix entre PDO et MySQLi
001 - Analyse détaillée de l'utilisation des PDO
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!