[ Index ]

PHP Cross Reference of JPSpan 0.4 (beta)

title

Body

[close]

/JPSpan/ -> Listener.php (source)

   1  <?php
   2  /**
   3  * @package JPSpan
   4  * @subpackage Listener
   5  * @version $Id: Listener.php,v 1.2 2004/11/15 10:47:19 harryf Exp $
   6  */
   7  //-----------------------------------------------------------------------------
   8  
   9  /**
  10  * Include handlers for incoming request data
  11  */
  12  require_once JPSPAN . 'RequestData.php';
  13  
  14  /**
  15  * Check always_populate_raw_post_data is switched off
  16  */
  17  if ( ini_get('always_populate_raw_post_data') ) {
  18      trigger_error (
  19          "Configuration error: PHP ini setting 'always_populate_raw_post_data' must be off",
  20          E_USER_ERROR
  21      );
  22  }
  23  //-----------------------------------------------------------------------------
  24  
  25  /**
  26  * Listener for incoming requests
  27  * @package JPSpan
  28  * @subpackage Listener
  29  * @access public
  30  */
  31  class JPSpan_Listener {
  32  
  33      /**
  34      * Encoding used by request (e.g. 'xml' or 'php')
  35      * @var string
  36      * @access public
  37      */
  38      var $encoding = 'xml';
  39      
  40      /**
  41      * Object which responds to request
  42      * @var object implementing Responder interface
  43      * @access private
  44      */
  45      var $Responder;
  46      
  47      /**
  48      * Constructs the listener, setting the default NullResponder
  49      * @access public
  50      */
  51      function JPSpan_Listener() {
  52          $this->Response = & new JPSpan_NullResponder();
  53      }
  54      
  55      /**
  56      * Set the Responder
  57      * @param object implementing Responder interface
  58      * @return void
  59      * @access public
  60      */
  61      function setResponder(& $Responder) {
  62          $this->Responder= & $Responder;
  63      }
  64      
  65      /**
  66      * Serve incoming requests
  67      * @return void
  68      * @access public
  69      */
  70      function serve() {  
  71          $this->Responder->execute($this->getRequestData());
  72      }
  73      
  74      /**
  75      * Detects the type of incoming request and calls the corresponding
  76      * RequestData handler to deal with it.
  77      * @return mixed request data as native PHP variables.
  78      * @access private
  79      */
  80      function getRequestData () {
  81          switch ( $_SERVER['REQUEST_METHOD'] ) {
  82              case 'POST':
  83                  global $HTTP_RAW_POST_DATA;
  84                  if ( $HTTP_RAW_POST_DATA ) {
  85                      return JPSpan_RequestData_RawPost::fetch($this->encoding);
  86                  } else {
  87                      return JPSpan_RequestData_Post::fetch($this->encoding);
  88                  }
  89              break;
  90              case 'GET':
  91              default:
  92                  return JPSpan_RequestData_Get::fetch($this->encoding);
  93              break;
  94          }
  95      }
  96      
  97  }
  98  //-----------------------------------------------------------------------------
  99  
 100  /**
 101  * A NullResponder loaded as the default responder
 102  * @package JPSpan
 103  * @subpackage Listener
 104  * @access public
 105  */
 106  class JPSpan_NullResponder {
 107      /**
 108      * Does nothing
 109      * @param mixed incoming request data
 110      * @return void
 111      * @access public
 112      */
 113      function execute(& $payload) {}
 114  }
 115  
 116  


Generated: Fri Nov 26 11:42:46 2004 Cross-referenced by PHPXref 0.6