Comment ajouter de chargement automatique-fonction de CodeIgniter?
Je voudrais être en mesure d'utiliser la programmation orientée objet et de créer de nouveaux objets dans ma contrôleurs de CodeIgniter. J'ai donc besoin d'utiliser un chargement automatique-fonction:
function __autoload( $classname )
{
require_once("../records/$classname.php");
}
Mais comment puis-je ajouter que, pour CodeIgniter?
Vous devez lier à votre autre question, afin de mieux espress vos besoins 😉
OriginalL'auteur Jonas | 2011-05-31
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter votre auto chargeur ci-dessus pour
app/config/config.php
. J'ai utilisé la mêmeautoload
fonction avant à cet endroit, et il a travaillé très habilement.Courtoisie de Phil de l'Esturgeon. De cette manière peut être plus portable.
core
serait probablementrecords
pour vous; mais vérifiez vos chemins d'accès sont corrects, peu importe. Cette méthode permet aussi d'empêcher toute interférence avec le chargementCI_
libs (accidentellement)Cela fonctionne en PHP 5.4, mais déclenche une erreur en PHP 5.5. Quelqu'un connais une solution?
Je l'utilise avec 5.6.7 et n'ont pas de problèmes, utilisez quelque chose comme phpab pour générer votre carte puis l'inclure
OriginalL'auteur Ross
le guide de l'Utilisateur sur L'Auto-chargement des Ressources est assez taquet à ce sujet.
loader.php
et auto-chargé comme une "config" du fichier. Mais il semble que la fonction est exécutée au chargement, donc j'obtiens ce message d'erreur:Message: require_once(../records/CI_Exceptions.php): failed to open stream: No such file or directory
des suggestions?probablement vous avez besoin pour faire de votre fonction autoload plus "intelligents", par exemple remplacer
_
pour/
et de faire de chemin d'accès absolu, ce qui permettra de faire CI_Exceptions.php -> CI/Exceptions.phpQue l'auto-chargement de la section n'est pas de l'auto-chargement. Il est pré-chargement des classes par Codeigniter. Ce que l'OP voulait, c'était de l'auto-chargement de classes lors de la tentative de les instancier, qui est ce que l'on a accepté la réponse ne.
OriginalL'auteur Gabriel Sosa
Je voudrais suggérer à l'aide de crochets afin d'ajouter cette fonction à votre code.
Permettre à des crochets dans votre config/config.php
Dans votre application/config/hooks.php ajouter un nouveau crochet sur le "pre_system" appel, ce qui se passe dans core/CodeIgniter.php avant de l'ensemble du système fonctionne.
Puis dans les crochets dossier de créer 2 fichiers:
Première: application/hooks/your_functions.php et le lieu de votre __autoload fonction et toutes les autres fonctions que vous souhaitez rendre disponible à ce stade.
Deuxième: application/hooks/your_hooks.php et placez ce code:
Cela permettra de faire toutes vos fonctions définies dans your_functions.php disponible partout dans votre code.
OriginalL'auteur zokibtmkd