Extension de la classe de contrôleur dans CodeIgniter
J'ai class MY_Controller extends CI_Controller
et la logique commune pour la grande section de profil, donc je'va essayé de créer class Profile extends MY_Controller
avec la logique commune pour la section de profil et de toutes les classes liées à cette section devrait s'étend ce Profil de classe que je comprends de droite, mais quand j'ai essayé de créer class Index extends Profile
j'obtiens une erreur:
Fatal error: Class 'Profile' not found
CodeIgniter essaie de trouver cette classe dans index.php
qui je suis en cours d'exécution.
Où est mon erreur? Ou peut-être il est anoter meilleure façon de marquer la logique commune?
source d'informationauteur Yekver
Vous devez vous connecter pour publier un commentaire.
- Je le prendre vous avez mis votre MY_Controller dans /application/de base, et de définir le préfixe dans la config.
Je serais prudent sur l'utilisation de l'index comme un nom de classe. Comme une fonction/méthode dans Codeigniter il possède un comportement.
Ensuite, si vous voulez prolonger le contrôleur vous avez besoin de mettre les classes dans le même fichier.
E. g. Dans /application de base
Dans /application/controllers
ou
J'ai trouvé cette page sur Google parce que j'ai eu le même problème. Je n'aimais pas les réponses répertoriées ici, donc j'ai créé ma propre solution.
1) Placez votre classe parent dans le
core
dossier.2) Placer une instruction include au début de toutes les classes qui comprennent la classe parent.
Donc typique d'un contrôleur pourrait ressembler à ceci:
La raison pour laquelle j'aime cette solution est, le point de l'ensemble de la création d'une classe parent est de couper vers le bas sur la répétition de code. Donc je n'aime pas l'autre réponse que suggère le copier/coller de la classe parent dans toutes vos classes de contrôleur.
Toutes les classes que vous êtes l'extension doit vivre dans application/CORE répertoire, donc dans votre cas, les deux My_Controller et Profil doit y vivre. Tous les "point final" de contrôleurs sera en direct dans l'application/controllers dossier
Mise à JOUR
Je corrige la position des mains. Étendue des classes dans le même fichier. @Rooneyl réponse montre comment mettre en œuvre
Après quelques difficultés avec la version 3 et ce problème j'ai décidé que ce n'était pas une mauvaise solution...
pour ajouter cette deuxième ligne de où le existe tout d'abord dans le system/core/CodeIgniter.php
[Si c'est pas trop tard, je le recommande fortement à l'encontre de php et/ou CodeIgniter.]