コード例 #1
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;
 }
コード例 #2
0
 /**
  * @param  ServiceLocatorInterface $serviceLocator
  * @return Plugin\Hal
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $services = $serviceLocator->getServiceLocator();
     $halConfig = $services->get('ZF\\Hal\\HalConfig');
     /* @var $rendererOptions \ZF\Hal\RendererOptions */
     $rendererOptions = $services->get('ZF\\Hal\\RendererOptions');
     $metadataMap = $services->get('ZF\\Hal\\MetadataMap');
     $hydrators = $metadataMap->getHydratorManager();
     $serverUrlHelper = $serviceLocator->get('ServerUrl');
     if (isset($halConfig['options']['use_proxy'])) {
         $serverUrlHelper->setUseProxy($halConfig['options']['use_proxy']);
     }
     $urlHelper = $serviceLocator->get('Url');
     $helper = new Plugin\Hal($hydrators);
     $helper->setMetadataMap($metadataMap)->setServerUrlHelper($serverUrlHelper)->setUrlHelper($urlHelper);
     $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $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));
         }
         $hydrator = $hydrators->get($defaultHydrator);
         $helper->setDefaultHydrator($hydrator);
     }
     $helper->setRenderEmbeddedEntities($rendererOptions->getRenderEmbeddedEntities());
     $helper->setRenderCollections($rendererOptions->getRenderEmbeddedCollections());
     $helper->setUseResourceLinksInsteadOfEmbeddedEntityLink($rendererOptions->getUseResourceLinksInsteadOfEmbeddedEntityLink());
     $hydratorMap = $rendererOptions->getHydrators();
     foreach ($hydratorMap as $class => $hydratorServiceName) {
         $helper->addHydrator($class, $hydratorServiceName);
     }
     return $helper;
 }
コード例 #3
0
 public function setUp()
 {
     $this->controller = $controller = new RestController();
     $this->router = $router = new SimpleRouteStack();
     $route = new Segment('/resource[/[:id]]');
     $router->addRoute('resource', $route);
     $this->event = $event = new MvcEvent();
     $event->setRouter($router);
     $event->setRouteMatch(new RouteMatch([]));
     $controller->setEvent($event);
     $controller->setRoute('resource');
     $pluginManager = new PluginManager();
     $pluginManager->setService('bodyParams', new BodyParams());
     $controller->setPluginManager($pluginManager);
     $urlHelper = new UrlHelper();
     $urlHelper->setRouter($this->router);
     $serverUrlHelper = new ServerUrlHelper();
     $serverUrlHelper->setScheme('http');
     $serverUrlHelper->setHost('localhost.localdomain');
     $linksHelper = new HalHelper();
     $linksHelper->setUrlHelper($urlHelper);
     $linksHelper->setServerUrlHelper($serverUrlHelper);
     $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor);
     $pluginManager->setService('Hal', $linksHelper);
     $linksHelper->setController($controller);
     $this->resource = $resource = new Resource();
     $controller->setResource($resource);
 }
コード例 #4
0
ファイル: HalTest.php プロジェクト: zfcampus/zf-hal
 public function testFromLinkCollectionShouldUseLinkCollectionExtractor()
 {
     $linkCollection = new LinkCollection();
     $extraction = true;
     $linkCollectionExtractor = $this->prophesize(LinkCollectionExtractor::class);
     $linkCollectionExtractor->extract($linkCollection)->willReturn($extraction);
     $this->plugin->setLinkCollectionExtractor($linkCollectionExtractor->reveal());
     $result = $this->plugin->fromLinkCollection($linkCollection);
     $this->assertEquals($extraction, $result);
 }
コード例 #5
0
ファイル: HalTest.php プロジェクト: antarus/mystra-pve
 public function testFromLinkCollectionShouldUseLinkCollectionExtractor()
 {
     $extraction = true;
     $linkCollectionExtractor = $this->getMockBuilder('ZF\\Hal\\Extractor\\LinkCollectionExtractor')->disableOriginalConstructor()->getMock();
     $linkCollectionExtractor->expects($this->once())->method('extract')->will($this->returnValue($extraction));
     $this->plugin->setLinkCollectionExtractor($linkCollectionExtractor);
     $linkCollection = new LinkCollection();
     $result = $this->plugin->fromLinkCollection($linkCollection);
     $this->assertEquals($extraction, $result);
 }
コード例 #6
0
 /**
  * @param  ServiceLocatorInterface $serviceLocator
  * @return Plugin\Hal
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $services = $serviceLocator->getServiceLocator();
     $config = $services->get('Config');
     $metadataMap = $services->get('ZF\\Hal\\MetadataMap');
     $hydrators = $metadataMap->getHydratorManager();
     $serverUrlHelper = $serviceLocator->get('ServerUrl');
     if (isset($config['zf-hal']['options']['use_proxy'])) {
         $serverUrlHelper->setUseProxy($config['zf-hal']['options']['use_proxy']);
     }
     $urlHelper = $serviceLocator->get('Url');
     $helper = new Plugin\Hal($hydrators);
     $helper->setMetadataMap($metadataMap)->setServerUrlHelper($serverUrlHelper)->setUrlHelper($urlHelper);
     $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $helper->setLinkCollectionExtractor($linkCollectionExtractor);
     if (isset($config['zf-hal']) && isset($config['zf-hal']['renderer'])) {
         $config = $config['zf-hal']['renderer'];
         if (isset($config['default_hydrator'])) {
             $hydratorServiceName = $config['default_hydrator'];
             if (!$hydrators->has($hydratorServiceName)) {
                 throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $hydratorServiceName));
             }
             $hydrator = $hydrators->get($hydratorServiceName);
             $helper->setDefaultHydrator($hydrator);
         }
         if (isset($config['render_embedded_resources'])) {
             $helper->setRenderEmbeddedEntities($config['render_embedded_resources']);
         }
         if (isset($config['render_embedded_entities'])) {
             $helper->setRenderEmbeddedEntities($config['render_embedded_entities']);
         }
         if (isset($config['render_collections'])) {
             $helper->setRenderCollections($config['render_collections']);
         }
         if (isset($config['hydrators']) && is_array($config['hydrators'])) {
             $hydratorMap = $config['hydrators'];
             foreach ($hydratorMap as $class => $hydratorServiceName) {
                 $helper->addHydrator($class, $hydratorServiceName);
             }
         }
     }
     return $helper;
 }
コード例 #7
0
 public function setUpHelpers()
 {
     if (isset($this->helpers)) {
         return;
     }
     $this->setupRouter();
     $urlHelper = new UrlHelper();
     $urlHelper->setRouter($this->router);
     $serverUrlHelper = new ServerUrlHelper();
     $serverUrlHelper->setScheme('http');
     $serverUrlHelper->setHost('localhost.localdomain');
     $this->linksHelper = $linksHelper = new HalHelper();
     $linksHelper->setUrlHelper($urlHelper);
     $linksHelper->setServerUrlHelper($serverUrlHelper);
     $linkExtractor = new LinkExtractor($serverUrlHelper, $urlHelper);
     $linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor);
     $linksHelper->setLinkCollectionExtractor($linkCollectionExtractor);
     $this->helpers = $helpers = new HelperPluginManager();
     $helpers->setService('url', $urlHelper);
     $helpers->setService('serverUrl', $serverUrlHelper);
     $helpers->setService('hal', $linksHelper);
 }
コード例 #8
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);
 }