PHP5 - GESTION DE MODULES EN OBJET

Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
- - Dernière réponse : audayls
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008
- 20 mai 2007 à 15:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40315-php5-gestion-de-modules-en-objet

Afficher la suite 
audayls
Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008
-
Salut,
Je ne sais pas si tu es en train de refaire une nouvelle version de cette source mais j'ai relevé un peu bug dans cette version.

C'est 3 fois rien et c'est facilement corrigeable : lorsque tu initialises plusieurs fois une classe qui est en status 2 une seule a la variable debug initialisée.
kankrelune
Messages postés
1305
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
"Oui parce que je veux bien laisser le choix de la configuration, et Non parce que SQL ne doit pas être utilisé puisqu'il est mis en tant que module. A la limite, je devrais découper mon Core en 2 : Une partie "critique" (genre classe sql et gestion de session) et une autre partie "module" (genre classe users, commentaires, galleries etc...).
Oui je pourrais faire ca en effet :) Jvais m'y attarder tiens."

Pour moi un module est une partie escamotable du site... un plug-in... pas une partie du core du site... je définnirais donc plutot comme module les sous catéorie d'un site (gallerie photos, espace de téléchargement)... mais c'est une question de sémantique qui n'enleve rien à la qualité de la source... .. .

J'ais une class qui ressemble à la tienne dans le principe... mais pour des modules comme je le définis plus haut... on y retrouve des options tel que...

- isActiv : comme statut pour toi sauf que c'est un booléen la notion de debug étant gérés sur la globalité du site et non par module
- hasAdmin : possede (ou non) une partie administrable à inclure en back office
- hasMain : est directement visionable ou doit etre inclus dans le site

Si ça peut te donner des idées... .. . ;o)

Sinon comme d'hab pas grand chose à redire (muarf même pô drole lOl)... si ce n'est que je ne comprend pas trop l'interet du destructeur de ta classe Core... .. .

Pour la variable $classname pourquoi ne pas la stocker dans un attribut plutot que de faire plusieur fois...

$classname = strtolower(get_class($this));

Mais c'est un détail... .. .

@ tchaOo°
FhX
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
"C'est une nouvelle version de ta précédente source?" On peut dire ca comme ca oui :)
Encore, comme Mala vient de l'expliquer, ceci est plus du code concret qu'un simple "blabla" que j'avais fait il y a quelques mois :)

"et je dirais que le choix du xml ou d'une base de données est à chacun en fonction de ses moyens/preférences/..." Oui et Non.
Oui parce que je veux bien laisser le choix de la configuration, et Non parce que SQL ne doit pas être utilisé puisqu'il est mis en tant que module. A la limite, je devrais découper mon Core en 2 : Une partie "critique" (genre classe sql et gestion de session) et une autre partie "module" (genre classe users, commentaires, galleries etc...).
Oui je pourrais faire ca en effet :) Jvais m'y attarder tiens.

"Maintenant je me suis toujours pune question sur les systèmes modulaire : comment associé ça avec un système de template (comme PHPnuke par exemple)."Simple, avec du try{}catch{}.
Tu fais ca :
try {
$x = new class();
// Signifie que la classe est instanciable, donc que le module est chargé. On peut continuer et afficher la suite sans problème.
} catch ( Exception $e ) { // Voir à faire une classe d'exception plus poussé aussi.
// Ici, la classe n'est pas instanciable, donc le module est désactivé. On fait tout autre chose.
}

Voila, c'est aussi simple que ca.

"Pourrais-je l'avoir en zip."Oui, quand j'aurais fais des modifs dessus. Un gros travail est en cours, je retravaille le Core au niveau de la gestion des modules (via numéro ID unique plutot que via un nom d'instance).

"Es-tu facher avec __autoload() ?" Pas du tout, mais je voulais pas me faire chier avec une fonction externe à mes classes pour l'exemple du code :)
Rassure toi, __autoload() est bien présent chez moi ^^


Je préviens pour dire que je vais faire une grosse modif du code... Mais que j'attends toujours autant d'idées pour l'améliorer :)
juki_webmaster
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3 -
// On inclus les fichiers : << Es-tu facher avec __autoload() ?
alpha386
Messages postés
16
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
15 novembre 2006
-
Salut

Pourrais-je l'avoir en zip.

Bye