2009-07-30 4 views
1

Je suis assez nouveau à la programmation OO ...bâtiment Dynamiquement/chargement d'une bibliothèque de classes en PHP

Je construis ce qui finit par se révéler une grande bibliothèque de classes à utiliser tout au long de mon site. De toute évidence, le chargement de la bibliothèque entière sur chaque page est une perte de temps et d'énergie ...

Donc, ce que je voudrais faire est de demander un seul fichier "config" php class sur chaque page, et de pouvoir "appeler" "ou" charger "d'autres classes selon les besoins - étendant ainsi ma classe en fonction de mes besoins. D'après ce que je sais, je ne peux pas utiliser une fonction dans la classe config pour simplement inclure() d'autres fichiers, en raison de problèmes d'étendue.

Quelles sont mes options? Comment les développeurs gèrent-ils habituellement ce problème, et qu'est-ce qui est le plus stable?

Répondre

3

Vous pouvez utiliser __autoload() ou créer une fabrique d'objets qui chargera les fichiers requis lorsque vous en aurez besoin. En outre, si vous rencontrez des problèmes de portée avec vos fichiers de bibliothèque, vous devriez probablement refactoriser votre mise en page. La plupart des bibliothèques sont des ensembles de classes qui peuvent être instanciés dans n'importe quelle portée.

Voici un exemple d'usine d'objets très basique.

class ObjectFactory { 

    protected $LibraryPath; 

    function __construct($LibraryPath) { 
     $this->LibraryPath = $LibraryPath; 
    } 

    public function NewObject($Name, $Parameters = array()) { 
     if (!class_exists($Name) && !$this->LoadClass($Name)) 
      die('Library File `'.$this->LibraryPath.'/'.$Name.'.Class.php` not found.'); 
     return new $Name($this, $Parameters); 
    } 

    public function LoadClass($Name) { 
     $File = $this->LibraryPath.'/'.$Name.'.Class.php'; // Make your own structure. 
     if (file_exists($File)) 
       return include($File); 
     else return false; 
    } 
} 

// All of your library files should have access to the factory 
class LibraryFile { 

    protected $Factory; 

    function __construct(&$Factory, $Parameters) { 
     $this->Factory = $Factory; 
    } 
} 
+0

Y at-il un tutoriel où que ce soit qui donne de bons conseils sur la configuration d'une bibliothèque de classes? – johnnietheblack

+0

J'ai ajouté un exemple de fabrique d'objets. – matpie

Questions connexes