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()); }); }
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; }); }
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'); }); }
/** * 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; }
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)); }
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()); }
public function build(ContainerBuilder $builder) { // TODO: Register custom bindings here... $builder->bind(WelcomeResource::class)->scoped(new Singleton())->marked(new RestResource('/', 'welcome'))->marked(new SetterInjection()); }
/** * 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; }
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)); }