/** * @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); }
/** * 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); }
/** * @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)); } }
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' => '&')))); }
public function testLoadNonExistentRoute() { $routes = new RoutePluginManager(); $this->setExpectedException('Zend\\ServiceManager\\Exception\\ServiceNotFoundException'); $routes->get('foo'); }
/** * @return RoutePluginManager */ public function getPluginManager() { $plugins = new RoutePluginManager(); $plugins->setServiceLocator($this->getServiceLocator()); return $plugins; }
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]')))))); }