Source for file Dispatcher.php

Documentation is available at Dispatcher.php

  1. <?php
  2.     /**
  3.      * Dispatcher Class
  4.      *
  5.      * @copyright Copyright (c) 2007 Mirchev Ideas Ltd. All rights reserved.
  6.      * @package MIPHPF
  7.      */
  8.  
  9.     /**
  10.      * Handles and dispatches the actions
  11.      *
  12.      * @copyright Copyright (c) 2007 Mirchev Ideas Ltd. All rights reserved.
  13.      * @package MIPHPF
  14.      */
  15.     class miDispatcher {
  16.         /**
  17.          * Reference to the view object
  18.          * 
  19.          * @var miView 
  20.          */
  21.         protected $_view;
  22.         
  23.         /**
  24.          * String parameter from the request specifing which action to be processed
  25.          *
  26.          * @var string 
  27.          */
  28.         protected $_action;
  29.         
  30.         /**
  31.          * The action object
  32.          *  
  33.          * @var object 
  34.          */
  35.         protected $_actionObj = null;
  36.         
  37.         /**
  38.          * Array map between action and action processing class names
  39.          * 
  40.          * @var array 
  41.          */
  42.         protected $_actionHandlers = array();
  43.         
  44.         /**
  45.          * Initializes the dispatcher
  46.          * 
  47.          * @param miView $view 
  48.          */
  49.         public function __construct(miView $view)
  50.         {
  51.             $this->_view = $view;
  52.         }
  53.         
  54.         /**
  55.          * Adds a class that handles a specific action
  56.          * The action processing class must inherit from miAction
  57.          * 
  58.          * @param string $action the action name
  59.          * @param string $actionHandlerClass the name of the action processing class
  60.          */
  61.         public function setActionHandler($action$actionHandlerClass)
  62.         {
  63.             $this->_actionHandlers[$action$actionHandlerClass;
  64.         }
  65.         
  66.         /**
  67.          * Clears all action handlers
  68.          */
  69.         public function clearActionHandlers()
  70.         {
  71.             $this->_actionHandlers = array();
  72.         }
  73.         
  74.         /**
  75.          * Returns the action string
  76.          * 
  77.          * @return string the action string
  78.          */
  79.         public function getAction()
  80.         {
  81.             return $this->_action;
  82.         }
  83.         
  84.         /**
  85.          * Returns the action object
  86.          * The action object is initialized in process()
  87.          * 
  88.          * @return miAction the action object
  89.          */
  90.         public function getActionObj()
  91.         {
  92.             return $this->_actionObj;
  93.         }
  94.         
  95.         /**
  96.          * Determines which action will be performed depending
  97.          * on the value of the "action" parameter from the request.
  98.          *
  99.          * @return boolean true if the action was recognized
  100.          */
  101.         public function process()
  102.         {
  103.             $this->_action = miGetParamDefault('action''');
  104.             
  105.             $actionObj $this->createActionObj($this->_action);
  106.             if ($actionObj === false)
  107.                 return false;
  108.             
  109.             $this->_actionObj = $actionObj;
  110.             
  111.             $this->_view->preProcess($actionObj);
  112.             $actionResult $actionObj->doAction();
  113.             $this->_view->postProcess($actionObj$actionResult);
  114.             return true;
  115.         }
  116.         
  117.         /**
  118.          * Creates new action object, subclassed from miAction. The object depends on $action
  119.          * If the action is unknown returns false
  120.          * 
  121.          * @param string $action 
  122.          * @return miAction|false
  123.          */
  124.         protected function createActionObj($action)
  125.         {
  126.             if (empty($this->_actionHandlers[$action]))
  127.                 return false;
  128.             
  129.             return new $this->_actionHandlers[$action]($this->_view);
  130.         }
  131.     }
  132.     
  133.     /**
  134.      * The default dispatcher class
  135.      * It has predefined actions for list, view, edit, create and delete
  136.      */
  137.     class miDefaultDispatcher extends miDispatcher {
  138.         /**
  139.          * Array map between action and action processing class
  140.          * 
  141.          * @access protected
  142.          */
  143.         protected $_actionHandlers = array(
  144.                 '' => 'miListAction',
  145.                 'dmView' => 'miViewAction',
  146.                 'dmEdit' => 'miEditAction',
  147.                 'dmExecEdit' => 'miExecEditAction',
  148.                 'dmExecDelete' => 'miExecDeleteAction',
  149.                 'dmCreate' => 'miCreateAction',
  150.                 'dmExecCreate' => 'miExecCreateAction'
  151.             );
  152.     }
  153. ?>

Documentation generated on Thu, 08 May 2008 16:57:25 +0300 by phpDocumentor 1.4.1