protected function bindParamTypes(ContainerBuilder $builder)
 {
     $builder->bind(FileParams::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         $entity = $request->getEntity();
         if ($entity instanceof MultipartFormEntity) {
             return new FileParams($entity->getFiles());
         }
         return new FileParams();
     });
     $builder->bind(FormParams::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         $entity = $request->getEntity();
         if ($entity instanceof FormEntityInterface) {
             return new FormParams($entity->getFields());
         }
         return new FormParams();
     });
     $builder->bind(QueryParams::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return new QueryParams($request->getUri()->getQuery());
     });
     $builder->bind(PathParams::class)->scoped(new RequestScoped())->to(function (RoutingContextInterface $context) {
         $match = $context->getRouteMatch();
         if ($match === NULL) {
             return new PathParams();
         }
         return new PathParams($match->getParameters());
     });
 }
Example #2
0
 public function build(ContainerBuilder $builder)
 {
     $builder->bind(LoggerInterface::class)->scoped(new Singleton())->to(function (TestSystem $system) {
         $handler = new ErrorLogHandler(ErrorLogHandler::SAPI, Logger::toMonologLevel(strtolower($system->getLogLevel())));
         $handler->pushProcessor(new PsrLogMessageProcessor());
         $monolog = new Logger('System');
         $monolog->pushHandler($handler);
         return $monolog;
     });
 }
Example #3
0
 public function build(ContainerBuilder $builder)
 {
     $builder->bind(WebDavMiddleware::class)->marked(new Middleware(1000000));
     $builder->bind(Header\DavHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\DavHeader::fromString($request->getHeader(Header\DavHeader::getFieldName()), '');
     });
     $builder->bind(Header\DepthHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\DepthHeader::fromString($request->getHeader(Header\DepthHeader::getFieldName()), '');
     });
     $builder->bind(Header\DestinationHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\DestinationHeader::fromString($request->getHeader(Header\DestinationHeader::getFieldName()), '');
     });
     $builder->bind(Header\IfHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\IfHeader::fromString($request->getHeader(Header\IfHeader::getFieldName()), '');
     });
     $builder->bind(Header\LockTokenHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\LockTokenHeader::fromString($request->getHeader(Header\LockTokenHeader::getFieldName()), '');
     });
     $builder->bind(Header\OverwriteHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\OverwriteHeader::fromString($request->getHeader(Header\OverwriteHeader::getFieldName()), 'F');
     });
     $builder->bind(Header\TimeoutHeader::class)->scoped(new RequestScoped())->to(function (HttpRequest $request) {
         return Header\TimeoutHeader::fromString($request->getHeader(Header\TimeoutHeader::getFieldName()), 'Infinite');
     });
 }
Example #4
0
 /**
  * Create the DI container builder instance.
  * 
  * @return ContainerBuilder
  */
 protected function createContainerBuilder()
 {
     $builder = new ContainerBuilder();
     foreach ($this->getContainerParams() as $k => $v) {
         $builder->setParameter($k, $v);
     }
     return $builder;
 }
Example #5
0
 public function build(ContainerBuilder $builder)
 {
     $builder->bind(DelegateTaskFactoryInterface::class)->scoped(new Singleton())->to(ContainerDelegateTaskFactory::class);
     $builder->bind(ProcessEngineFactory::class)->scoped(new Singleton())->marked(new SetterInjection());
     $builder->bind(ProcessEngineInterface::class)->toAlias(ProcessEngine::class);
     $builder->bind(ProcessEngine::class)->scoped(new ApplicationScoped())->to(ProcessEngineFactory::class, 'createProcessEngine');
     $builder->bind(RepositoryService::class)->scoped(new ApplicationScoped())->to(ProcessEngineInterface::class, 'getRepositoryService');
     $builder->bind(RuntimeService::class)->scoped(new ApplicationScoped())->to(ProcessEngineInterface::class, 'getRuntimeService');
     $builder->bind(TaskService::class)->scoped(new ApplicationScoped())->to(ProcessEngineInterface::class, 'getTaskService');
     $builder->bind(HistoryService::class)->scoped(new ApplicationScoped())->to(ProcessEngineInterface::class, 'getHistoryService');
     $builder->bind(ManagementService::class)->scoped(new ApplicationScoped())->to(ProcessEngineInterface::class, 'getManagementService');
     $builder->bind(AsyncCommandHandler::class)->marked(new JobHandler());
 }
 public function build(ContainerBuilder $builder)
 {
     $builder->bind(FlashMessagesInterface::class)->scoped(new Singleton())->to(FlashMessages::class);
     $builder->bind(FlashMessagesCookieStorage::class)->scoped(new ApplicationScoped())->marked(new EventListener(SendResponseEvent::class, 'onSendResponse', 10000, true));
     $builder->bind(FlashMessagesSessionStorage::class)->scoped(new ApplicationScoped());
     $builder->bind(FlashMessagesStorageInterface::class)->toAlias(FlashMessagesSessionStorage::class);
     $builder->bind(BaseUriViewHelper::class)->marked(new ExpressViewHelper('base', self::NS));
     $builder->bind(FlashesViewHelper::class)->marked(new ExpressViewHelper('flashes', self::NS));
     // Register form helpers.
     $builder->bind(CheckBoxViewHelper::class)->marked(new ExpressViewHelper('checkbox', self::NS));
     $builder->bind(ComboBoxViewHelper::class)->marked(new ExpressViewHelper('combobox', self::NS));
     $builder->bind(FormViewHelper::class)->marked(new ExpressViewHelper('form', self::NS));
     $builder->bind(HiddenViewHelper::class)->marked(new ExpressViewHelper('hidden', self::NS));
     $builder->bind(PasswordViewHelper::class)->marked(new ExpressViewHelper('password', self::NS));
     $builder->bind(RadioViewHelper::class)->marked(new ExpressViewHelper('radio', self::NS));
     $builder->bind(TextareaViewHelper::class)->marked(new ExpressViewHelper('textarea', self::NS));
     $builder->bind(TextfieldViewHelper::class)->marked(new ExpressViewHelper('textfield', self::NS));
     $builder->bind(UploadViewHelper::class)->marked(new ExpressViewHelper('upload', self::NS));
 }
Example #7
0
 protected function buildView(ContainerBuilder $builder)
 {
     $builder->bind(ViewInterface::class)->scoped(new ApplicationScoped())->to(static::class, 'createView');
     $builder->bind(ViewModelResponseGenerator::class)->scoped(new Singleton())->marked(new ResponseGenerator(800));
     $builder->bind(ExtendedNativeViewRendererFactory::class)->scoped(new Singleton())->marked(new ViewRendererFactory());
 }
Example #8
0
 public function build(ContainerBuilder $builder)
 {
     // TODO: Register custom bindings here...
     $builder->bind(WelcomeResource::class)->scoped(new Singleton())->marked(new RestResource('/', 'welcome'))->marked(new SetterInjection());
 }
Example #9
0
 /**
  * Compiles scoped proxy types and saves them on the filesystem.
  * 
  * @param ContainerBuilder $builder
  * @param string $proxyCachePath
  * @param array<stribg> $additionalProxies
  * @return string
  */
 protected function compileScopedProxies(ContainerBuilder $builder, $proxyCachePath, array $additionalProxies = [])
 {
     $code = "\t\tpublic function loadScopedProxy(\$typeName) {\n";
     $code .= "\t\tswitch(\$typeName) {\n";
     $proxyTypes = [];
     foreach ($builder->getProxyBindings() as $binding) {
         $ref = new \ReflectionClass($binding->getTypeName());
         $proxyTypes[$ref->name] = $ref;
     }
     foreach ($additionalProxies as $add) {
         $ref = new \ReflectionClass($add);
         $proxyTypes[$ref->name] = $ref;
     }
     foreach ($proxyTypes as $ref) {
         $parent = $ref;
         $mtime = filemtime($ref->getFileName());
         while ($parent = $ref->getParentClass()) {
             $mtime = max($mtime, filemtime($parent->getFileName()));
         }
         $file = $proxyCachePath . '/' . md5(strtolower($ref->name)) . '.php';
         $create = !is_file($file) || filemtime($file) < $mtime;
         if ($create) {
             $proxyCode = '<?php' . "\n\n" . $this->proxyGenerator->generateProxyCode($ref);
             Filesystem::writeFile($file, $proxyCode);
         }
         $code .= "\t\t\tcase " . var_export($ref->name, true) . ":\n";
         $code .= "\t\t\t\trequire_once " . var_export($file, true) . ";\n";
         $code .= "\t\t\t\treturn \$typeName . '__scoped';\n";
         $code .= "\t\t\t\tbreak;\n";
     }
     $code .= "\t\t}\n";
     $code .= "\t\treturn parent::loadScopedProxy(\$typeName);\n";
     $code .= "\t\t}\n\n";
     return $code;
 }
Example #10
0
 protected function buildLog(ContainerBuilder $builder)
 {
     $builder->bind(LoggerManager::class)->scoped(new Singleton());
     $builder->bind(LoggerInterface::class)->to(LoggerManager::class, 'getLogger');
 }
 protected function registerViewHelpers(ContainerBuilder $builder)
 {
     $builder->bind(AttributesViewHelper::class)->marked(new ExpressViewHelper('attributes', self::NS));
     $builder->bind(AttributeViewHelper::class)->marked(new ExpressViewHelper('attribute', self::NS));
     $builder->bind(ChooseViewHelper::class)->marked(new ExpressViewHelper('choose', self::NS));
     $builder->bind(CommentViewHelper::class)->marked(new ExpressViewHelper('comment', self::NS));
     $builder->bind(DocTypeViewHelper::class)->marked(new ExpressViewHelper('doctype', self::NS));
     $builder->bind(ForViewHelper::class)->marked(new ExpressViewHelper('for', self::NS));
     $builder->bind(IfViewHelper::class)->marked(new ExpressViewHelper('if', self::NS));
     $builder->bind(IncludeViewHelper::class)->marked(new ExpressViewHelper('include', self::NS));
     $builder->bind(OtherwiseViewHelper::class)->marked(new ExpressViewHelper('otherwise', self::NS));
     $builder->bind(ParamViewHelper::class)->marked(new ExpressViewHelper('param', self::NS));
     $builder->bind(SetViewHelper::class)->marked(new ExpressViewHelper('set', self::NS));
     $builder->bind(UnlessViewHelper::class)->marked(new ExpressViewHelper('unless', self::NS));
     $builder->bind(WhenViewHelper::class)->marked(new ExpressViewHelper('when', self::NS));
 }