2012-02-01 2 views
0

J'ai une classe appelée "BaseCore" qui exécute simplement tous les spl_autoload_registers(); qui sont dans ce fichier.spl_autoload_register et sous-classes

class BaseCore{ 

public function __construct(){ 
    spl_autoload_register('loadClasses'); 
    spl_autoload_register('loadConfig'); 
    spl_autoload_register('loadFMAPI'); 
} 

Ma deuxième classe étend BaseCore qui, chaque nouvelle classe que je veux prolonger la BaseCore, je dois exiger/inclure la classe BaseCore.

require_once('classes/baseCore.class.php'); 

class SchedulerDND extends BaseCore { 

Cependant, cela semble très obsolète et une ancienne façon de le faire.

Donc, je suppose que ma question est, comment pourrais-je inclure le BaseCore dans ma classe enfant sans avoir à écrire require_once(); sur chaque classe d'enfants?

Merci!

+0

déplacer spl_autoload_register ('loadClasses'); à votre contrôleur frontal ou script d'initialisation – Fivell

+0

Désolé, que voulez-vous dire par contrôleur frontal ou script d'initialisation? – DarkMantis

+1

http://en.wikipedia.org/wiki/Front_Controller_pattern – Fivell

Répondre

2

Toutes les classes spl_autoload_register doivent être dans un certain type de fichier bootstrap Par exemple, créez bootstrap.php et y mettez tous vos appels de chargement automatique. Ensuite, vous assurez-vous toujours inclure votre fichier d'amorçage Par exemple, require « bootstrap.php » dans votre index.php

C'est tout ce qu'il ya à faire. Vous bootstrap.php est chargé qu'une seule fois puis vous pouvez compter sur autoloader pour charger toutes vos classes, pas besoin d'require ou require_once dans aucune de vos classes.

Questions connexes