Subversion Repositories Applications.gtt

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

<?php

abstract class aAction {
        
        private static $resultat = null;
        private $suivant = null;
        
        public function getResultat()
        {
                if (aAction::$resultat == null) {
                        aAction::$resultat = new Resultat;
                } else {
                        return aAction::$resultat;
                }
        }
        
        public function getSuivant()
        {
                return $this->suivant;
        }
        public function setSuivant($s)
        {
                if (is_array($s)){
                        $this->suivant = $s;
                } else {
                        $this->suivant[] = $s;
                }
        }
        
        public function verifier(Resultat $Resultat)
    {
        // Nous rassemblons les valeurs du tableau _POST contenat des : dans sous tableau de _POST.
        foreach ($_POST as $cle => $val) {
                $morceau = array();
                if (preg_match('/^(.+):(.+)$/', $cle, $morceau)) {
                        $_POST[$morceau[1]][] = $morceau[2];
                        unset($_POST[$cle]);
                }
        }
    }
    
    public function demarrer()
    {
        $Resultat = $this->getResultat();
        $this->executer($Resultat);
                if ($this->getSuivant() != null) {
                        for ($i = 0; $i < count($this->getSuivant()) ; $i++) {
                                $liste_actions = $this->getSuivant();
                                if ($liste_actions[$i] instanceof aAction) {
                                        $liste_actions[$i]->demarrer();
                                } else {
                                        if ($liste_actions[$i] == '__defaut__') {
                                                $methode = 'executer';
                                        } else {
                                                $methode = 'executer'.$liste_actions[$i];
                                        }
                                        $this->$methode($Resultat);
                                }
                        }
                }
    }

    abstract protected function executer(Resultat $Resultat);
}
?>