2010-05-16 4 views
1

Je commence à écrire une application en PHP avec un de mes amis et je me demandais, si vous avez des conseils sur la façon de mettre en œuvre le support de module dans notre application.Quels sont les bons moyens d'écrire une application PHP avec support de modules?

Ou existe-t-il un moyen de charger automatiquement des modules écrits en php par une application php? Ou devrais-je juste compter sur la fonction __autoload?

Et nous n'avons pas besoin de plugins qui peuvent être installés via une interface web, nous avons juste besoin d'un moyen astucieux pour associer des pages web de notre projet à certaines classes (elles rendront la page) donc index.php peut appeler classer et récupérer sa sous-page générée.

Et nous n'utilisons aucun type de cadre, pour l'instant au moins.

+0

Jusqu'où cela devrait-il aller - des plug-ins pour une application Web, installable sur un clic via une interface web, ou de nouvelles classes simples à utiliser dans votre code? –

+0

ils n'ont pas besoin d'être installés via une interface web, et nous pensons qu'il serait préférable d'utiliser des classes dans notre code et de laisser la classe principale faire savoir qu'une certaine page est enregistrée avec une certaine classe – Gabriel

Répondre

1

Re votre commentaire: Autoloading en conjonction avec la dénomination stricte des fichiers serait totalement suffisant dans ce cas IMO.

Vous pouvez définir un espace de noms spécifique (pas dans la nouvelle manière de PHP 5.3 namespace, juste dans le sens d'un préfixe commun aux noms), par ex. Module_* pour les noms de classe de module.

Vous pouvez ensuite organiser vos modules dans des répertoires avec des fichiers de classe qui contiennent exactement une définition de classe, par exemple:

/modules/Mail/index.php // defines class Module_Mail 
/modules/Database/index.php // defines class Module_Database 
/modules/Image/index.php // defines class Module_Image 

Votre fonction chargeur automatique alors, chaque fois qu'une classe Module_* est demandée:

$Database = new Module_Database("localhost", .....); 

inclure le bon fichier dans le bon répertoire.

C'est la manière par ex. Zend Framework le fait, et le fait plutôt bien. Envisagez de choisir un espace de noms plus spécifique que Module_ pour assurer l'interopérabilité avec d'autres scripts et applications si c'est une option future.

liées Légèrement: In a PHP project, how do you organize and access your helper objects?

1

Il semble que vous cherchiez un moyen d'organiser les différentes tâches que chaque page doit effectuer. Dans ce cas, jetez un oeil à la MVC pattern. Il fournit un moyen simple de séparer votre accès aux données (modèles) et comment vous rendre/présenter des informations (vues).

Vous pouvez mapper facilement des pages à des fonctions. Si vous stockez les informations dans un tableau de valeurs mappées, puis utilisez une fonction pour comparer l'URL demandée avec chacune des URL dans le tableau. Un tel tableau pourrait ressembler à ceci:

$urls = array(
    '/' => 'index', 
    '/aboutus/' => 'aboutUs', 
); 

Il ya plusieurs articles qui expliquent comment l'implémenter en PHP en quelques heures. This article est un guide très simple. Je ne suis pas un fan de leur utilisation du modèle de registre, mais la lecture devrait vous fournir suffisamment d'informations sur la façon dont vous pouvez l'implémenter vous-même.

0

Tout ce que vous avez besoin ici est une architecture MVC, avec une classe contrôleur associé à chaque « module ».

Si vous n'êtes pas contre l'utilisation d'un cadre, optez pour Zend MVC

Il vous permet d'avoir le principe suivant:

1

En ce qui concerne le chargement automatique, vous pouvez également utiliser spl_autoload_register, de définir plusieurs (plusieurs) fonctions de chargement automatique, de sorte que chaque module peut mettre en place sa propre mise en œuvre de autoloading.

Questions connexes