예제 #1
0
 /**
  * @param string $name
  * @param string $invokableClass
  * @param null $shared
  * @return $this|BasePluginManager
  */
 public function setInvokableClass($name, $invokableClass, $shared = null)
 {
     if ($name == 'part' && $invokableClass != __NAMESPACE__ . '\\Http\\Part' && $this->has('part')) {
         return $this;
     }
     parent::setInvokableClass($name, $invokableClass, $shared);
 }
예제 #2
0
 /**
  * Retrieve a service from the manager by name
  *
  * Allows passing an array of options to use when creating the instance.
  * createFromInvokable() will use these and pass them to the instance
  * constructor if not null and a non-empty array.
  *
  * @param  string $name
  * @param  array $options
  * @param  bool $usePeeringServiceManagers
  * @return object
  */
 public function get($name, $options = array(), $usePeeringServiceManagers = true)
 {
     if (!$this->has($name) && !class_exists($name)) {
         $class = sprintf('%s\\%s\\%s', __NAMESPACE__, $this->subNamespace, ucfirst($name));
         if (!class_exists($class)) {
             $class = sprintf('Zend\\Mvc\\Router\\%s\\%s', $this->subNamespace, ucfirst($name));
         }
         $name = $class;
     }
     return parent::get($name, $options, $usePeeringServiceManagers);
 }
예제 #3
0
 /**
  * @dataProvider shippedRoutes
  */
 public function testDoesNotInvokeDiForShippedRoutesUsingShortName($routeName, $options)
 {
     // Setup route plugin manager
     $routes = new RoutePluginManager();
     foreach ($this->shippedRoutes() as $name => $info) {
         $routes->setInvokableClass($name, $info[0]);
     }
     // Add DI abstract factory
     $di = new Di();
     $diAbstractFactory = new DiAbstractServiceFactory($di, DiAbstractServiceFactory::USE_SL_BEFORE_DI);
     $routes->addAbstractFactory($diAbstractFactory);
     $shortName = substr($routeName, strrpos($routeName, '\\') + 1);
     $this->assertTrue($routes->has($shortName));
     try {
         $route = $routes->get($shortName, $options);
         $this->assertInstanceOf($routeName, $route);
     } catch (\Exception $e) {
         $messages = array();
         do {
             $messages[] = $e->getMessage() . "\n" . $e->getTraceAsString();
         } while ($e = $e->getPrevious());
         $this->fail(implode("\n\n", $messages));
     }
 }
예제 #4
0
 public static function getRouteAlternative()
 {
     $routePlugins = new RoutePluginManager();
     $routePlugins->setInvokableClass('part', 'Zend\\Mvc\\Router\\Http\\Part');
     return new Part(array('type' => 'Zend\\Mvc\\Router\\Http\\Segment', 'options' => array('route' => '/[:controller[/:action]]', 'defaults' => array('controller' => 'fo-fo', 'action' => 'index'))), true, $routePlugins, array('wildcard' => array('type' => 'Zend\\Mvc\\Router\\Http\\Wildcard', 'options' => array('key_value_delimiter' => '/', 'param_delimiter' => '/')), 'query' => array('type' => 'Zend\\Mvc\\Router\\Http\\Query', 'options' => array('key_value_delimiter' => '=', 'param_delimiter' => '&'))));
 }
예제 #5
0
 public function testLoadNonExistentRoute()
 {
     $routes = new RoutePluginManager();
     $this->setExpectedException('Zend\\ServiceManager\\Exception\\ServiceNotFoundException');
     $routes->get('foo');
 }
예제 #6
0
 /**
  * @return RoutePluginManager
  */
 public function getPluginManager()
 {
     $plugins = new RoutePluginManager();
     $plugins->setServiceLocator($this->getServiceLocator());
     return $plugins;
 }
예제 #7
0
파일: PartTest.php 프로젝트: navassouza/zf2
 public static function getRoute()
 {
     $routePlugins = new RoutePluginManager();
     $routePlugins->setInvokableClass('part', 'Zend\\Mvc\\Router\\Http\\Part');
     return new Part(array('type' => 'Zend\\Mvc\\Router\\Http\\Literal', 'options' => array('route' => '/foo', 'defaults' => array('controller' => 'foo'))), true, $routePlugins, array('bar' => array('type' => 'Zend\\Mvc\\Router\\Http\\Literal', 'options' => array('route' => '/bar', 'defaults' => array('controller' => 'bar'))), 'baz' => array('type' => 'Zend\\Mvc\\Router\\Http\\Literal', 'options' => array('route' => '/baz'), 'child_routes' => array('bat' => array('type' => 'Zend\\Mvc\\Router\\Http\\Segment', 'options' => array('route' => '/:controller'), 'may_terminate' => true, 'child_routes' => array('wildcard' => array('type' => 'Zend\\Mvc\\Router\\Http\\Wildcard'))))), 'bat' => array('type' => 'Zend\\Mvc\\Router\\Http\\Segment', 'options' => array('route' => '/bat[/:foo]', 'defaults' => array('foo' => 'bar')), 'may_terminate' => true, 'child_routes' => array('literal' => array('type' => 'Zend\\Mvc\\Router\\Http\\Literal', 'options' => array('route' => '/bar')), 'optional' => array('type' => 'Zend\\Mvc\\Router\\Http\\Segment', 'options' => array('route' => '/bat[/:bar]'))))));
 }