コード例 #1
0
 /**
  * @param ApplicationInterface $app
  */
 public function registerServices(ApplicationInterface $app)
 {
     $servers = $app->getConfig()->subset(BeanstalkServer::class);
     foreach ($servers as $service => $data) {
         $serviceName = self::SERVICE_PREFIX . $service;
         $service = new ClassServiceSpecs($serviceName, Pheanstalk::class);
         $service->setParams([$data['host'], $data['port'], $data['timeout'], $data['persistent']]);
         $service->setSetters(['useTube' => [$data['tube']]]);
         $app->getServicesFactory()->registerService($service);
     }
 }
コード例 #2
0
 /**
  * This test is not quite unit, but helped a lot pinpointing a very
  * twisted issue with static service references
  *
  * @throws Exception
  */
 public function testStaticServiceReferenceSubstitutedByNewInstance()
 {
     $dependencyDefinition = new ClassServiceSpecs('dependency.id', DependencyService::class);
     $dependencyDefinition->setStatic(false);
     $serviceDefinition = new ClassServiceSpecs('main.service', TestService::class);
     $serviceDefinition->setSetters(['setOptionalDependency' => [new ServiceReference('dependency.id')]])->setStatic(false);
     $servicesFactory = (new ServicesFactory())->registerService($serviceDefinition, $dependencyDefinition);
     $firstInstance = $servicesFactory->get('main.service');
     $secondInstance = $servicesFactory->get('main.service');
     $this->assertNotSame($firstInstance, $secondInstance);
     $this->assertNotSame($firstInstance->getOptionalDependency(), $secondInstance->getOptionalDependency());
 }
コード例 #3
0
 /**
  * Service definition factory
  *
  * IT IS NOT RECOMMENDED TO CALL THIS METHOD EXPLICITLY
  *
  * Please call AbstractServiceSpecs::factory(), that will
  * forward to the appropriate factory after having performed
  * basic sanity checks ('id' presence)
  *
  * @param array|Collection $rawDefinition
  * @throws Exception
  */
 public static function factory($rawDefinition)
 {
     $rawDefinition = Collection::cast($rawDefinition);
     // then check check a class has been provided
     if (!$rawDefinition->has('class')) {
         throw new Exception('Missing \'class\' parameter', Exception::INCOMPLETE_SERVICE_SPECS);
     }
     if (!is_string($class = $rawDefinition['class'])) {
         throw new Exception('\'class\' parameter has to be a string', Exception::INVALID_SERVICE_SPECS);
     }
     $serviceDefinition = new ClassServiceSpecs($rawDefinition['id'], $class);
     // constructor params
     if ($rawDefinition->has('params')) {
         $serviceDefinition->setParams($rawDefinition['params']);
     }
     // setters
     if ($rawDefinition->has('setters')) {
         $serviceDefinition->setSetters($rawDefinition['setters']);
     }
     return $serviceDefinition;
 }