Framework

Méthode Modules::GetModule

GetModule
GetModule — Cette méthode est l'une des plus importante de la classe Modules. En effet, elle permet d'instancier un objet module, juste à partir de son nom et ce en gérant différentes erreurs pouvant se produire lors de la construction.


Description



Code PHP :
Module GetModule(string $module)

Cette méthode de la classe Modules renvoie le module en question si tout se déroule bien. Il se peut néanmoins que différentes erreurs se produisent, nous allons donc en voir quelques unes.

Erreurs possibles
  • 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.



Liste de paramètres



  • $module C'est le nom sous forme de string du module que l'on désire instancié.

    Exemple de $module
    Code PHP :
     
    $module = 'wiki';
     




Valeur de retour



Cette fonction retourne un objet Module dont il faudra tester l'intégrité.


Exemple d'utilisation



Exemple d'utilisation avec test d'intégrité

Code PHP :
 
// Initialisation de l'objet
$objetModules = new Modules();
 
// Construction du module du wiki
$wiki = $objetModules->GetModule('wiki');
 
// On teste si le module à bien été crée comme il faut
if ($wiki->GetErrors() == 0)
{
    // le module du wiki est valide et prêt à être utilisé
}
else { // Il y a eu des erreurs, le module wiki n'est pas utilisable }
 
 


De façon à écrire des modules sans erreurs et fiable, il est obligatoire de tester l'intégrité du module renvoyé par la méthode GetModule()


Gestion plus fine des erreurs



Pour connaître exactement l'erreur, il suffit de faire quelques petits tests supplémentaires.

Pour cela, voici un petit code :
Code PHP :
 
if ( ($wiki->GetErrors() & MODULE_NOT_AVAILABLE) == MODULE_NOT_AVAILABLE )
{
    echo 'Le module wiki n\'est pas installé sur ce site!';
}
elseif ( ($wiki->GetErrors() & ACCES_DENIED) == ACCES_DENIED )
{
    echo 'Vous n\'avez pas les droits d\'accès au module wiki!';
}
elseif ( ($wiki->GetErrors() & MODULE_NOT_YET_IMPLEMENTED) == MODULE_NOT_YET_IMPLEMENTED )
{
    echo 'Le module wiki est bien présent, mais ne dispose pas d\'interface de communication inter-module!';
}
 


Pour aller plus loin...
Chaque constante d'erreur est codée sur un bit différent des 32 bits sur lesquels sont stocké les entiers.
La méthode Module::GetErrors() renvoie donc cet entier, mais toutes les erreurs sont donc mélangé à l'intérieur.

Pour en retrouvé une, il suffit de faire un ET bit à bit avec la constante d'erreur désiré car elle ne contient que des 0 sauf pour un seul bit qui lui est à 1. Ainsi en faisant le Et bit à bit on aura passera tous les autres bits à 0 et il ne restera que le bit de la constante si il y était. Il suffit donc de tester l'égalité de ceci avec la constante elle même.

Exemple
Code PHP :
 
 
define('MODULE_NOT_AVAILABLE', 1);
// codage binaire 00000000 00000000 00000000 00000001
define('ACCES_DENIED', 2);
// codage binaire 00000000 00000000 00000000 00000010
 
// Simulation d'un erreur.
$errors = 2;
// codage binaire 00000000 00000000 00000000 00000010
 
$test = $errors & MODULE_NOT_AVAILABLE;
// codage binaire 00000000 00000000 00000000 00000000
// donc $test != MODULE_NOT_AVAILABLE
 
$test = $errors & ACCES_DENIED;
// codage binaire 00000000 00000000 00000000 00000010
// donc $test == ACCES_DENIED
 
 



Voir aussi



Cette page a été vue 2146 fois