Version 1.0.0 - 2006/01/31

7.5 Stimulation et Réaction

Nous avons déjà précisé que ce sont les contextes  qui définissent le comportement fonctionnel de vos applications. Mais nous n’avons pas encore vu de quelle manière.
Nous appelons évènement, l’ensemble formé par une stimulation de l’utilisateur et la réaction du contexte cible. Il existe plusieurs manière de générer un événement (par l’envoi d’un formulaire, un click sur lien, par programmation, etc). La cible d’un évènement est un contexte appartenant à la grappe du contexte principale de la page. Les noms des évènements sont très important car il détermine le nom de la méthode du contexte cible qui va être exécutée. Afin de les différencier des autres, les méthodes évènementielles sont suffixées par « Event ». Les méthodes sont appelées en cascades inverses, c’est à dire que si le contexte cible ne gère pas un événement, il va être propagé sur le contexte parent et ainsi de suite. Une erreur est générée si l’évènement n’est pas intercepté. Evitez de renvoyer des exceptions dans les méthodes évènementielles, capturez les autant soit peu. Si vous développez une application dont toutes les exceptions sont gérées dans les méthodes évènementielles, elle sera d’une stabilité déconcertante. Veuillez à ce que les commandes de navigation se trouvent en fin de méthode car l’exécution du scripte ne sera pas arrêtée immédiatement.

Méthodes évènementielles

<?php

class ManagerProjectPage extends ManagerPageContext {

  public function saveProjectEvent(){
    $message = new NoasMessage();
    $this->project->checkForSave($message);
    if(!$message->hasErrorMessage()){
      if(!$this->project->exist()){
        unset($this->projectEmun);
      }
      $this->project->save();
    }
    self::getApplication()->getMessage()->addMessage($message);
  }
  public function deleteProjectEvent(){
    $message = new NoasMessage();
    $this->project->checkForDelete($message);
    if(!$message->hasErrorMessage()){
      if($this->project->exist()){
        $this->project->remove();
        unset($this->projectEmun);
        unset($this->project);
      }
    }
    self::getApplication()->getMessage()->addMessage($message);
  }
}
?>

 

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