示例#1
0
 /**
  * Construct an instance of Drest Request object
  * @param mixed $request_object preferred router type
  * @param array $adapterClasses - an array of adapter classes available
  * @throws RequestException
  */
 public function __construct($request_object = null, array $adapterClasses = null)
 {
     // If none are passed use the default system adapters
     $adapterClasses = is_array($adapterClasses) ? $adapterClasses : self::$defaultAdapterClasses;
     $defaultClass = 'Symfony\\Component\\HttpFoundation\\Request';
     if (is_null($request_object)) {
         if (!class_exists($defaultClass)) {
             throw RequestException::noRequestObjectDefinedAndCantInstantiateDefaultType($defaultClass);
         }
         // Default to using symfony's request object
         /* @var \Symfony\Component\HttpFoundation\Request $defaultClass */
         $this->adapter = new Adapter\Symfony2($defaultClass::createFromGlobals());
     } else {
         if (is_object($request_object)) {
             foreach ($adapterClasses as $adapterClass) {
                 /* @var Adapter\AdapterInterface $adapterClass */
                 $adaptedClassName = $adapterClass::getAdaptedClassName();
                 if ($request_object instanceof $adaptedClassName) {
                     $adaptedObj = new $adapterClass($request_object);
                     if ($adaptedObj instanceof Adapter\AdapterAbstract) {
                         $this->adapter = $adaptedObj;
                         return;
                     }
                 }
             }
             throw RequestException::unknownAdapterForRequestObject($request_object);
         } else {
             throw RequestException::invalidRequestObjectPassed();
         }
     }
 }