Version 1.0.0 - 2006/01/31

6.3 Les énumérations

Il arrive souvent en programmation, que certaines variables ne puisent leurs valeurs que dans un ensemble finis. En associant à chaque valeur un indice ou une étiquette, nous construisons une énumération. Vous l’utiliserez principalement pour offrir un choix de valeur limité (pensez à une liste déroutante correspondant au mois de l’année). Le framework met à votre disposition plusieurs classes et interfaces pour répondre à ce besoin. L’interface NoasEmun sert à modéliser l’ensemble finis et l’interface NoasItem à modéliser un élément de l’ensemble. Vous aurez rarement l’occasion de développer vos propres énumérations. Il en existe déjà, répondant à différents besoins, prêtes à l’emploi.
Certaines énumérations nécessitent un chargement explicite de l’ensemble des valeurs. Ce chargement peut, selon la taille des données, devenir nuisible pour le système. Dans ce cas, et de manière générale, nous vous conseillons d’utiliser un chargement à retardement « lazy loading ». Même si les temps sont assez courts et quasiment imperceptibles en développement, cette technique contribue à augmenter vos performances en production.
Les énumérations font partie des ressources d’une application. Elles sont donc internationalisables. Si votre énumération doit être accessible à tous points de votre application, vous avez tout intérêt à la déclarer au sein de votre interface. Inspirez-vous du listing suivant.
Vous aurez tout le loisir d’explorer les possibilités offertes par les différentes implémentations des énumérations.

Implémentation d'interface utilisateur

<?php
Noas::import("noas.core.NoasUserInterface");
Noas::import("noas.util.enum.NoasFileEnum");
class ManagerUserInterface extends NoasUserInterface {
  private $contextEnum;
  function __construct() {
    parent::__construct(self::release);
  }
  protected function loadResource($resourceBase, $local){
    $this->loadGuiResource( $resourceBase."manager-gui.resource");
    $this->loadErrorResource(
                                           $resourceBase."manager-error.resource");
    $this->loadMessageResource(
                                $resourceBase."manager-message.resource");
    $this->contextEnum =
       new NoasFileEnum($resourceBase."manager-context.enum");
  }
  public function getContextEnum(){
    if(!$this->contextEnum->isLoad()){
      $this->contextEnum->load();
    }
    return $this->contextEnum;
  }
}
?>

 

© 2005 Réoka Djohou, tous droits réservés.