Question

Je voudrais créer plusieurs instances d'une classe dans CodeIgniter. J'ai créé ma classe comme une bibliothèque, mais ne peut pas comprendre la syntaxe à utiliser pour créer plus d'une instance.

Était-ce utile?

La solution

A partir du guide des utilisateurs CodeIgniter:

CI Guide de l'utilisateur: chargeur de classes

  

Affectation d'une bibliothèque à un nom d'objet différent

     paramètre

Si la troisième (en option) est   en blanc, la bibliothèque sera généralement   attribué à un objet avec le même   le nom de la bibliothèque. Par exemple, si   la bibliothèque est appelée session, il   être affecté à une variable nommée   $ this-> session.

     

Si vous préférez définir votre propre classe   Les noms que vous pouvez passer sa valeur à la   troisième paramètre:   $ This-> load-> Bibliothèque ( 'session', '',   'My_session');

     

// classe de session est maintenant accessible   en utilisant:

     

$ this-> my_session

Je pense que ce que vous cherchez.

Autres conseils

Je sais que cette bande de roulement est passé de temps, mais il était l'une des questions que je suis tombé sur tout en regardant ma réponse. Alors, voici ma solution ...

Il est PHP. Créez votre classe comme une bibliothèque, le charger en utilisant la norme CI chargeur de classes, mais l'utiliser comme vous le feriez dans un script PHP régulier.

Construire votre classe:

class My_class {

    var $number;

    public function __construct($given_number){
        $number = $given_number;
    }

    public function set_new_num($given_number){
        $number = $given_number;
    }
}

Chargez:

// This will load the code so PHP can create an instance of the class
$this->load->library('My_class');

Alors instancier et utiliser l'objet en cas de besoin:

$num = new My_class(24);

echo $num->number;
// OUTPUT: 24

$num->set_new_num(12);

echo $num->number;
// OUTPUT: 12

La seule fois que je l'utilise $ this-> my_class est de faire des appels à des fonctions statiques que je code.

Désolé pour la relance de ce sujet, mais je pense que je pourrais avoir quelque chose à ajouter raisonnable.

Vous pouvez le faire pour ajouter plusieurs instances d'une classe. Je ne sais pas si elle est contraire CodeIgniter usage standard de toute façon, mais semble plus CodeIgniter-ish que le chargement d'une bibliothèque (qui crée $ this-> nom_bibliothèque qui n'est pas utilisé), puis faire 2 cas plus avec mot-clé « nouveau ».

$this->load->library( 'my_library', '', 'instance1' );
$this->load->library( 'my_library', '', 'instance2' );

$this->instance1->my_class_variable = 1; 
$this->instance2->my_class_variable = 2; 

echo $this->instance1->my_class_variable; // outputs 1
echo $this->instance2->my_class_variable; // outputs 2

Je l'utilise dans mon code pour générer différents menus. J'ai une classe et des instances différentes pour chaque menu « menu », avec différents éléments de menu dans chaque.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top