Framework

Classes Modules - ModuleInterface

Table des matières

Introduction



Une des caractéristiques clé de PHPBoost est sa modularité. Mais cela signifie aussi que tous les modules doivent être absolument indépendant des autres.
C'est justement ce problème d'indépendance des modules qui empêche les modules d'interagir entre eux.


Pourquoi utiliser ces classes ?



L'intérêt de ces classes devrait donc vous sauter au yeux maintenant que vous êtes au fait du problème.

Ces deux classes permettent donc moyennant un module légèrement modifié d'accéder à certaines de ces fonctionnalité à partir d'un autre module. Ainsi il devient possible d'effectuer des recherches sur le site en entier ou de voir les dernieres actions d'un membre, ...
Bien sûr, tout cela dans le cas ou les modules implémentent les bonnes fonctionnalités.


Compatibilité



Ces fonctionnalités sont compatibles uniquement avec PHPBoost 2.1 et supérieur.


Classe Modules



Méthodes





Classe ModuleInterface



Directives



La classe ModuleInterface implémente des méthodes permettant de savoir quelles fonctionnalités sont disponibles pour un module en particulier.
Ainsi donc, il faudra créer une classe portant le nom du module qui héritera de cette classe, afin de pouvoir utiliser tout ce qui va suivre.

Vous ne devrez jamais avoir à utiliser directement la classe ModuleInterface. Il faudra donc toujours utiliser la classe du module concerné qui hérite de celle-ci.
Tous vos accès à un/des module(s) doivent passer par la classe Modules et la méthode GetModule.

Méthodes





Constantes



  • MODULE_NOT_AVAILABLE : Indique que le module demandé n'est pas activé sur le site.
  • ACCES_DENIED : L'utilisateur n'a pas le droit d'accéder au module.
  • MODULE_NOT_YET_IMPLEMENTED : Le module ne dispose pas d'interface de communication avec le noyau.
  • FUNCTIONNALITIE_NOT_IMPLEMENTED : Le module dispose d'un interface, mais ne dispose pas de la fonctionnalité demandé.


Exemple d'utilisation



Ces classes sont donc extrêmement importantes pour garder l'indépendance des modules, et à ce titre, il faut absolument tester l'absence d'erreurs lors de la construction d'un objet module via ce petit bout de code
Code PHP :
 
<?php
...
include_once('../kernel/framework/modules/modules.class.php');
$modules = new Modules ();
$myModule = $modules->GetModule('mymodule');
if ($myModule->GetErrors() == 0)
{
    // traitement
}
else { // annulation du traitement }
...
?>

de même lors de l'appel à une fonctionnalité, il y a deux façon de se prémunir contre les erreurs lors de l'appel à une fonctionnalité
Code PHP :
 
<?php
...
$reslt = $myMod->Functionnality('fct',$args)
if ( $myMod->GetErrors() == 0 )
{
    // traitement de $reslt
}
else { // annulation du traitement }
...
?>

ou bien
Code PHP :
 
<?php
...
if ( $myMod->HasFunctionnality('fct') == 0 )
{
    $reslt = $myMod->Functionnality('fct',$args)
    // traitement de $reslt
}
else { // annulation du traitement }
...
?>



Comment rendre son module compatible avec ces fonctionnalité



Vous developpez votre propre module et voulez qu'il soit compatible avec ces différent appels, alors suivez ce lien :
Comment rendre son module compatible avec l'interface de communication

Tout module digne de ce nom doit absolument être compatible avec cette interface de communication
Cette page a été vue 2218 fois