Framework

Méthode ModuleInterface::GetErrors

GetErrors
GetErrors — Renvoie un entier contenant des bits d'erreurs.


Description



Code PHP :
int GetErrors( )

Cette méthode de la classe ModuleInterface renvoie un entier qui vaut 0 lorsqu'aucune erreur n'est survenue et une valeur autre lorsque des erreurs se sont produites.

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.
  • Functionnality_NOT_IMPLEMENTED : Le module ne dispose pas de la fonctionnalité demandée.



Liste de paramètres




Aucun paramètre.


Valeur de retour



Cette fonction retourne un booléen qui indique l'implémentation ou non de la méthode de nom $functionnality dans le module.



Exemple d'utilisation




Code PHP :
 
// Initialisation de l'objet
$modules = new Modules();
 
// Récupération d'un module
$module = $modules->GetModule('mon_module');
 
// Si le module est valide
if ($module->GetErrors() == 0)
{
    // Traitement
    $result = $module->Functionnality('maFonction', $argument1, $argument2, ...);
    if ($module->GetErrors() == 0)
    {
        // Traitement du résultat
    }
    else
    {
        // Une erreur Functionnality_NOT_IMPLEMENTED est survenue
    }
}
// Erreur de construction
else
{
    // Pour connaître exactement l'erreur
    // il suffit de faire quelques petits tests supplémentaires.
    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 ModuleInterface::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
 
 


Notez bien que l'erreur Functionnality_NOT_IMPLEMENTED est nettoyée avant chaque appel à une fonctionnalité!
Ainsi, ceci est possible :

Code PHP :
 
// Initialisation de l'objet
$modules = new Modules();
 
// Récupération d'un module
$module = $modules->GetModule('mon_module');
 
// Si le module est valide
if ($module->GetErrors() == 0)
{
    // Traitement
    $result = $module->Functionnality('maFonction', $argument1, $argument2, ...);
    if ($module->GetErrors() == 0)
    {
        // Traitement du résultat
    }
    else
    {
        // Une erreur Functionnality_NOT_IMPLEMENTED est survenue
        $result2 = $module->Functionnality('maFonction2', $argument1, ...);
        if ($module->GetErrors() == 0)
        {
            // Traitement du résultat
        }
        else
        {
            // Une autre erreur Functionnality_NOT_IMPLEMENTED est survenue
        }
    }
}
 
Cette page a été vue 2097 fois