コード例 #1
0
ファイル: HalTest.php プロジェクト: zfcampus/zf-hal
 public function setUp()
 {
     $routerClass = class_exists(V2TreeRouteStack::class) ? V2TreeRouteStack::class : TreeRouteStack::class;
     $routeClass = class_exists(V2Segment::class) ? V2Segment::class : Segment::class;
     $this->router = $router = new $routerClass();
     $route = new $routeClass('/resource[/[:id]]');
     $router->addRoute('resource', $route);
     $route2 = new $routeClass('/help');
     $router->addRoute('docs', $route2);
     $router->addRoute('hostname', ['type' => 'hostname', 'options' => ['route' => 'localhost.localdomain'], 'child_routes' => ['resource' => ['type' => 'segment', 'options' => ['route' => '/resource[/:id]'], 'may_terminate' => true, 'child_routes' => ['children' => ['type' => 'literal', 'options' => ['route' => '/children']]]], 'users' => ['type' => 'segment', 'options' => ['route' => '/users[/:id]']], 'contacts' => ['type' => 'segment', 'options' => ['route' => '/contacts[/:id]']], 'embedded' => ['type' => 'segment', 'options' => ['route' => '/embedded[/:id]']], 'embedded_custom' => ['type' => 'segment', 'options' => ['route' => '/embedded_custom[/:custom_id]']]]]);
     $this->event = $event = new MvcEvent();
     $event->setRouter($router);
     $router->setRequestUri(new Http('http://localhost.localdomain/resource'));
     $controller = $this->controller = $this->prophesize(AbstractRestfulController::class);
     $controller->getEvent()->willReturn($event);
     $this->urlHelper = $urlHelper = new UrlHelper();
     $urlHelper->setRouter($router);
     $this->serverUrlHelper = $serverUrlHelper = new ServerUrlHelper();
     $serverUrlHelper->setScheme('http');
     $serverUrlHelper->setHost('localhost.localdomain');
     $this->plugin = $plugin = new HalHelper();
     $plugin->setController($controller->reveal());
     $linkUrlBuilder = new LinkUrlBuilder($serverUrlHelper, $urlHelper);
     $plugin->setLinkUrlBuilder($linkUrlBuilder);
     $linkExtractor = new LinkExtractor($linkUrlBuilder);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $plugin->setLinkCollectionExtractor($linkCollectionExtractor);
 }
コード例 #2
0
 /**
  * @param  ContainerInterface|\Zend\ServiceManager\ServiceLocatorInterface $container
  * @return Plugin\Hal
  */
 public function __invoke(ContainerInterface $container)
 {
     $container = $container instanceof AbstractPluginManager ? $container->getServiceLocator() : $container;
     /* @var $rendererOptions \ZF\Hal\RendererOptions */
     $rendererOptions = $container->get('ZF\\Hal\\RendererOptions');
     $metadataMap = $container->get('ZF\\Hal\\MetadataMap');
     /** @var HydratorPluginManager $hydrators */
     $hydrators = $metadataMap->getHydratorManager();
     $helper = new Plugin\Hal($hydrators);
     $helper->setMetadataMap($metadataMap);
     $linkUrlBuilder = $container->get(Link\LinkUrlBuilder::class);
     $helper->setLinkUrlBuilder($linkUrlBuilder);
     $linkCollectionExtractor = $container->get(LinkCollectionExtractor::class);
     $helper->setLinkCollectionExtractor($linkCollectionExtractor);
     $defaultHydrator = $rendererOptions->getDefaultHydrator();
     if ($defaultHydrator) {
         if (!$hydrators->has($defaultHydrator)) {
             throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $defaultHydrator));
         }
         /** @var HydratorInterface $hydrator */
         $hydrator = $hydrators->get($defaultHydrator);
         $helper->setDefaultHydrator($hydrator);
     }
     $helper->setRenderEmbeddedEntities($rendererOptions->getRenderEmbeddedEntities());
     $helper->setRenderCollections($rendererOptions->getRenderEmbeddedCollections());
     $hydratorMap = $rendererOptions->getHydrators();
     foreach ($hydratorMap as $class => $hydratorServiceName) {
         $helper->addHydrator($class, $hydratorServiceName);
     }
     return $helper;
 }
コード例 #3
0
 public function setupHelpers()
 {
     if (!$this->router) {
         $this->setupRouter();
     }
     $urlHelper = new UrlHelper();
     $urlHelper->setRouter($this->router);
     $serverUrlHelper = new ServerUrlHelper();
     $serverUrlHelper->setScheme('http');
     $serverUrlHelper->setHost('localhost.localdomain');
     $linkUrlBuilder = new LinkUrlBuilder($serverUrlHelper, $urlHelper);
     $linksHelper = new HalHelper();
     $linksHelper->setLinkUrlBuilder($linkUrlBuilder);
     $linkExtractor = new LinkExtractor($linkUrlBuilder);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor);
     $this->helpers = $helpers = new HelperPluginManager(new ServiceManager());
     $helpers->setService('url', $urlHelper);
     $helpers->setService('serverUrl', $serverUrlHelper);
     $helpers->setService('Hal', $linksHelper);
     $this->plugins = $plugins = new ControllerPluginManager(new ServiceManager());
     $plugins->setService('Hal', $linksHelper);
 }