Inheritance: extends Nette\Object
コード例 #1
0
ファイル: Helpers.php プロジェクト: jasin755/DoctrineCache
 /**
  * @param \Nette\DI\CompilerExtension $extension
  * @param string|\stdClass $cache
  * @param string $suffix
  * @param bool $debug
  * @return string
  */
 public static function processCache(Nette\DI\CompilerExtension $extension, $cache, $suffix, $debug = NULL)
 {
     $builder = $extension->getContainerBuilder();
     $impl = $cache instanceof \stdClass ? $cache->value : ($cache instanceof Statement ? $cache->entity : (string) $cache);
     list($cache) = self::filterArgs($cache);
     /** @var Statement $cache */
     if (isset(self::$cacheDriverClasses[$impl])) {
         $cache->entity = self::$cacheDriverClasses[$impl];
     }
     if ($impl === 'default') {
         $cache->arguments[1] = 'Doctrine.' . ucfirst($suffix);
         $cache->arguments[2] = $debug !== NULL ? $debug : $builder->parameters['debugMode'];
     }
     if ($impl === 'filesystem') {
         $cache->arguments[] = $builder->parameters['tempDir'] . '/cache/Doctrine.' . ucfirst($suffix);
     }
     $def = $builder->addDefinition($serviceName = $extension->prefix('cache.' . $suffix))->setClass('Doctrine\\Common\\Cache\\Cache')->setFactory($cache->entity, $cache->arguments)->setAutowired(FALSE);
     if (method_exists($def, 'setInject')) {
         @$def->setInject(FALSE);
         // wow, such deprecated, many BC!
     }
     if (class_exists($cache->entity) && is_subclass_of($cache->entity, 'Doctrine\\Common\\Cache\\CacheProvider')) {
         $ns = 'Kdyby_' . $serviceName;
         if (preg_match('~^(?P<projectRoot>.+)(?:\\\\|\\/)vendor(?:\\\\|\\/)kdyby(?:\\\\|\\/)doctrine-cache(?:\\\\|\\/).+\\z~i', __DIR__, $m)) {
             $ns .= '_' . substr(md5($m['projectRoot']), 0, 8);
         }
         $def->addSetup('setNamespace', array($ns));
     }
     return '@' . $serviceName;
 }
コード例 #2
0
ファイル: Compiler.php プロジェクト: kukulich/di
 /**
  * Add custom configurator extension.
  * @return self
  */
 public function addExtension(string $name, CompilerExtension $extension) : self
 {
     if (isset($this->extensions[$name]) || isset(self::$reserved[$name])) {
         throw new Nette\InvalidArgumentException("Name '{$name}' is already used or reserved.");
     }
     $this->extensions[$name] = $extension->setCompiler($this, $name);
     return $this;
 }
コード例 #3
0
ファイル: Compiler.php プロジェクト: nakoukal/fakturace
	/**
	 * Add custom configurator extension.
	 * @return self
	 */
	public function addExtension($name, CompilerExtension $extension)
	{
		if (isset(self::$reserved[$name])) {
			throw new Nette\InvalidArgumentException("Name '$name' is reserved.");
		}
		$this->extensions[$name] = $extension->setCompiler($this, $name);
		return $this;
	}
コード例 #4
0
ファイル: AspectsConfig.php プロジェクト: kdyby/aop
 public function load(Nette\DI\Compiler $compiler, Nette\DI\ContainerBuilder $containerBuilder)
 {
     $aspects = [];
     foreach ($this->aspectsList as $def) {
         if (!is_array($def)) {
             if (!is_string($def) && (!$def instanceof \stdClass || empty($def->value)) && !$def instanceof Nette\DI\Statement) {
                 $serialised = Nette\Utils\Json::encode($def);
                 throw new Kdyby\Aop\UnexpectedValueException("The service definition {$serialised} is expected to be an array or Neon entity.");
             }
             $def = ['factory' => $def];
         }
         $def['tags'][] = AspectsExtension::ASPECT_TAG;
         $aspects[] = $def;
     }
     $compiler->parseServices($containerBuilder, ['services' => $aspects], $this->prefix ? substr($this->extension->prefix('self'), 0, -5) : NULL);
 }
コード例 #5
0
 public function afterCompile(Code\ClassType $class)
 {
     parent::afterCompile($class);
     $init = $class->methods['initialize'];
     $config = $this->getConfig($this->defaults);
     $init->addBody('\\App\\Form\\Control\\Selectize::register(?, ?);', ['addSelectize', $config]);
 }
コード例 #6
0
 /**
  * Adjusts DI container compiled to PHP class. Intended to be overridden by descendant.
  *
  * @param \Nette\PhpGenerator\ClassType $class class, interface, trait description
  * @return void
  */
 public function afterCompile(ClassType $class)
 {
     parent::afterCompile($class);
     $config = $this->getConfig($this->defaults);
     $initialize = $class->methods['initialize'];
     $initialize->addBody('RadekDostal\\NetteComponents\\DateTimePicker\\TbDateTimePicker::register(?);', array($config[self::CONFIG_FORMAT]));
 }
コード例 #7
0
ファイル: FormsExtension.php プロジェクト: zaxcms/framework
 public function afterCompile(ClassType $class)
 {
     parent::afterCompile($class);
     $config = $this->getConfig();
     $init = $class->methods['initialize'];
     $init->addBody('$this->getByType(\'Zax\\Forms\\FormExtension\')->register(?);', array_key_exists('messages', $config) ? [$config['messages']] : [[]]);
 }
コード例 #8
0
ファイル: Extension.php プロジェクト: ytnuk/application
 public function setCompiler(Nette\DI\Compiler $compiler, $name) : self
 {
     $application = current($compiler->getExtensions(Nette\Bridges\ApplicationDI\ApplicationExtension::class));
     if ($application instanceof Nette\Bridges\ApplicationDI\ApplicationExtension) {
         $application->defaults['errorPresenter'] = FALSE;
         $application->defaults['scanDirs'] = FALSE;
         $application->defaults['mapping'] = ['*' => 'Ytnuk\\*\\*'];
     }
     $session = current($compiler->getExtensions(Nette\Bridges\HttpDI\SessionExtension::class));
     if ($session instanceof Nette\Bridges\HttpDI\SessionExtension) {
         $session->defaults['debugger'] = $this->debugMode;
     }
     $http = current($compiler->getExtensions(Nette\Bridges\HttpDI\HttpExtension::class));
     if ($http instanceof Nette\Bridges\HttpDI\HttpExtension) {
         $http->defaults['headers']['X-Powered-By'] = __NAMESPACE__;
         $contentSecurityPolicy = ['default-src' => '\'self\'', 'form-action' => '\'self\'', 'img-src' => '\'self\' data:'];
         if ($this->debugMode) {
             $contentSecurityPolicy += ['script-src' => '\'self\' \'unsafe-inline\' \'unsafe-eval\'', 'style-src' => '\'self\' \'unsafe-inline\''];
         }
         $http->defaults['headers']['Content-Security-Policy'] = implode(';', array_map(function (string $key, string $value) {
             return implode(' ', [$key, $value]);
         }, array_keys($contentSecurityPolicy), array_values($contentSecurityPolicy)));
     }
     $di = current($compiler->getExtensions(Nette\DI\Extensions\DIExtension::class));
     if ($di instanceof Nette\DI\Extensions\DIExtension) {
         $di->defaults['debugger'] = $this->debugMode;
     }
     return parent::setCompiler($compiler, $name);
 }
コード例 #9
0
 /**
  * @param Code\ClassType $class
  */
 public function afterCompile(Code\ClassType $class)
 {
     parent::afterCompile($class);
     $builder = $this->getContainerBuilder();
     $initialize = $class->methods['initialize'];
     $initialize->addBody('IPub\\FormPhone\\Controls\\Phone::register($this->getService(?));', [$builder->getByType(Phone\Phone::CLASS_NAME)]);
 }
コード例 #10
0
ファイル: UtilsExtension.php プロジェクト: trejjam/utils
 public function beforeCompile()
 {
     parent::beforeCompile();
     $builder = $this->getContainerBuilder();
     $config = $this->createConfig();
     /** @var Nette\DI\ServiceDefinition[] $classes */
     $classes = [];
     foreach ($this->classesDefinition as $k => $v) {
         list($firstKey) = explode('.', $k);
         if (!isset($config[$firstKey]) || !isset($config[$firstKey]['enable']) || $config[$firstKey]['enable']) {
             $classes[$k] = $builder->getDefinition($this->prefix($k));
         }
     }
     /** @var Nette\DI\ServiceDefinition[] $factories */
     $factories = [];
     foreach ($this->factoriesDefinition as $k => $v) {
         $factories[$k] = $builder->getDefinition($this->prefix($k));
     }
     $classes['layout.baseLayout']->addSetup('setConfigurations', ['configurations' => $config]);
     if ($config['labels']['enable']) {
         $classes['labels']->addSetup('setConfigurations', ['configurations' => $config['labels']]);
         $classes['layout.baseLayout']->setArguments([$this->prefix('@labels')]);
     }
     $factories['components.filterFactory']->setArguments([$config['components']['filter']['template']]);
     $factories['components.pagingFactory']->setArguments([$config['components']['paging']['template']]);
 }
コード例 #11
0
ファイル: ModalsExtension.php プロジェクト: brosland/modals
 /**
  * @param ClassType $class
  */
 public function afterCompile(ClassType $class)
 {
     parent::afterCompile($class);
     $config = $this->getConfig($this->defaults);
     $initialize = $class->methods['initialize'];
     $initialize->addBody(Modal::class . '::$VERSION = ?;', [$config['version']]);
 }
コード例 #12
0
ファイル: Extension.php プロジェクト: ytnuk/templating
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $this->validateConfig($this->defaults);
     $builder = $this->getContainerBuilder();
     $builder->addDefinition($this->prefix('control'))->setImplement(Control\Factory::class)->setArguments([$this->config['templates']]);
 }
コード例 #13
0
ファイル: Extension.php プロジェクト: ytnuk/page
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $builder->addDefinition($this->prefix('control'))->setImplement(Control\Factory::class);
     $builder->addDefinition($this->prefix('form.control'))->setImplement(Form\Control\Factory::class);
 }
コード例 #14
0
ファイル: Extension.php プロジェクト: vitkutny/version
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $this->config = $this->getConfig($this->defaults);
     $builder = $this->getContainerBuilder();
     $builder->addDefinition($this->prefix('filter'))->setClass(Filter::class)->setArguments([$this->config['directory'], $this->config['parameter']]);
 }
コード例 #15
0
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $config = $this->getConfig($this->defaults);
     $builder = $this->getContainerBuilder();
     $definition = $builder->addDefinition($this->prefix('sessionHandler'))->setClass('Pematon\\Session\\MysqlSessionHandler')->addSetup('setTableName', [$config['tableName']]);
     $builder->getDefinition('session')->addSetup('setHandler', array($definition));
 }
コード例 #16
0
ファイル: ChainExtension.php プロジェクト: brosland/chain
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig(self::$DEFAULTS);
     $accounts = $this->loadAccounts($config['account']);
     $builder->addDefinition($this->prefix('chain'))->setClass(\Brosland\Chain\Chain::class)->addSetup('injectServiceLocator')->addSetup('injectServiceMap', [$accounts]);
 }
コード例 #17
0
 /**
  * @param  Nette\PhpGenerator\ClassType $class
  * @return void
  */
 public function afterCompile(Nette\PhpGenerator\ClassType $class)
 {
     parent::afterCompile($class);
     $init = $class->methods['initialize'];
     $init->addBody('Ublaboo\\Controls\\Controls\\NotTranslatableSelectBox::register();');
     $init->addBody('Ublaboo\\Controls\\Controls\\NotTranslatableRadioList::register();');
     $init->addBody('Ublaboo\\Controls\\Controls\\TextInputCustomLabel::register();');
 }
コード例 #18
0
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig(self::$DEFAULTS);
     $baseUrl = $config['host'] . ':' . $config['port'];
     $wallets = $this->loadWallets($config['wallet'], $baseUrl);
     $builder->addDefinition($this->prefix('blockchain'))->setClass(\Brosland\Blockchain\Blockchain::class)->setArguments([$baseUrl])->addSetup('injectServiceLocator')->addSetup('injectServiceMap', [$wallets]);
 }
コード例 #19
0
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig($this->defaults);
     $accounts = $this->loadAccounts($config['account'], $config['curl']);
     $wallets = $this->loadWallets($config['wallet']);
     $builder->addDefinition($this->prefix('blocktrail'))->setClass(Blocktrail::class)->addSetup('setServiceLocator')->addSetup('setAccountsServiceMap', [$accounts])->addSetup('setWalletsServiceMap', [$wallets])->addSetup('setWebhooksMap', [$config['webhook']]);
 }
コード例 #20
0
 /**
  * @return array
  */
 public function getConfig()
 {
     $config = parent::getConfig($this->defaults);
     $appDir = $this->getContainerBuilder()->parameters['appDir'];
     if (!array_key_exists('componentsDir', $config)) {
         $config['componentsDir'] = $appDir . '/Components';
     }
     return $config;
 }
コード例 #21
0
ファイル: Extension.php プロジェクト: WebChemistry/RollBar
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $config = $this->getContainerBuilder()->expand($this->validateConfig($this->defaults, $this->getConfig()));
     $builder = $this->getContainerBuilder();
     if (!$config['accessToken']) {
         throw new \Exception('Access token for Rollback must be set.');
     }
     $builder->addDefinition($this->prefix('rollbar'))->setClass('WebChemistry\\RollBar\\RollBar', [$config['accessToken'], $config['logging'], $config['enable'], $config['config']]);
 }
コード例 #22
0
 public function afterCompile(PhpGenerator\ClassType $class)
 {
     parent::afterCompile($class);
     $config = $this->getConfig($this->defaults);
     $init = $class->methods['initialize'];
     $init->addBody('DotBlue\\Nette\\Forms\\CalendarPicker::register(\'' . $config['method'] . '\');');
     if ($config['jsConverter']) {
         $init->addBody('DotBlue\\Nette\\Forms\\CalendarPicker::$jsConverter = array_merge(DotBlue\\Nette\\Forms\\CalendarPicker::$jsConverter, ?);', array($config['jsConverter']));
     }
 }
コード例 #23
0
ファイル: DebuggerExtension.php プロジェクト: trejjam/utils
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->createConfig();
     $tracyLogger = $builder->getDefinition('tracy.logger');
     $tracyLogger->setFactory('Trejjam\\Utils\\Debugger\\Debugger::getLogger')->addSetup('setEmailClass', ['@Nette\\Mail\\IMailer'])->addSetup('setEmailSnooze', [$config['snoze']])->addSetup('setHost', [$config['host']])->addSetup('setPath', [$config['path']]);
     $tracyLogger = $builder->getDefinition('tracy.blueScreen');
     $tracyLogger->setFactory('Trejjam\\Utils\\Debugger\\Debugger::getBlueScreen')->addSetup('setSslAuthorizedDn', [$config['sslAuthorizedDn'], $config['logIgnoreEmail']])->addSetup('setSiteMode', [$config['siteMode']]);
 }
コード例 #24
0
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $containerBuilder = $this->getContainerBuilder();
     $containerBuilder->addDefinition($this->prefix('serverInfoFactory'))->setClass('JR\\SystemInfo\\ServerInfoFactory');
     $containerBuilder->addDefinition($this->prefix('phpInfoFactory'))->setClass('JR\\SystemInfo\\PhpInfoFactory');
     $containerBuilder->addDefinition($this->prefix('serverInfo'))->setFactory('@' . $this->prefix('serverInfoFactory') . '::createServerInfo');
     $containerBuilder->addDefinition($this->prefix('hostInfo'))->setClass('JR\\SystemInfo\\HostInfo');
     $containerBuilder->addDefinition($this->prefix('phpInfo'))->setFactory('@' . $this->prefix('phpInfoFactory') . '::createPhpInfo');
     $containerBuilder->addDefinition($this->prefix('systemInfo'))->setClass('JR\\SystemInfo\\SystemInfo');
 }
コード例 #25
0
 /**
  * @return array
  */
 public function getConfig(array $defaults = NULL, $expand = TRUE)
 {
     $config = parent::getConfig($defaults, $expand);
     // ignoredAnnotations
     $globalConfig = $this->compiler->getConfig();
     if (!empty($globalConfig['doctrine']['ignoredAnnotations'])) {
         trigger_error("Section 'doctrine: ignoredAnnotations:' is deprecated, please use '{$this->name}: ignore:' ", E_USER_DEPRECATED);
         $config = Nette\DI\Config\Helpers::merge($config, array('ignore' => $globalConfig['doctrine']['ignoredAnnotations']));
     }
     return $this->compiler->getContainerBuilder()->expand($config);
 }
コード例 #26
0
 public function beforeCompile()
 {
     parent::beforeCompile();
     $builder = $this->getContainerBuilder();
     $router = $builder->getDefinition('router');
     $moduleRouters = array_keys($builder->findByTag(self::TAG_MODULE_ROUTER));
     foreach ($moduleRouters as $serviceName) {
         $router->addSetup('offsetSet', array(NULL, '@' . $serviceName));
     }
     $router->addSetup('offsetSet', array(NULL, $this->prefix('@router')));
 }
コード例 #27
0
 public function beforeCompile()
 {
     parent::beforeCompile();
     $containerBuilder = $this->getContainerBuilder();
     foreach ($containerBuilder->findByTag(static::TAG_CONTAINER_CONTROL_CONTROL) as $serviceName => $containerControlControlTags) {
         Validators::assertField($containerControlControlTags, 'name', 'string');
         Validators::assertField($containerControlControlTags, 'containerControl', 'string');
         $containerControlService = $containerBuilder->getDefinition($this->prefix($containerControlControlTags['containerControl'] . 'ContainerControlFactory'));
         $containerControlService->addSetup('?->registerControlFactory(?, ?)', ['@self', $containerControlControlTags['name'], '@' . $serviceName]);
     }
 }
コード例 #28
0
ファイル: ExportExtension.php プロジェクト: trejjam/export
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig($this->defaults);
     if (class_exists('\\Symfony\\Component\\Console\\Command\\Command')) {
         $command = ['cliExport' => 'Cli\\Export'];
         foreach ($command as $k => $v) {
             $builder->addDefinition($this->prefix($k))->setClass('Trejjam\\Export\\' . $v, [$config])->addTag('kdyby.console.command');
         }
     }
 }
コード例 #29
0
ファイル: Extension.php プロジェクト: dzibma/rest-api
 public function loadConfiguration()
 {
     parent::loadConfiguration();
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig(self::$defaults);
     $builder->addDefinition($this->prefix('requestFactory'))->setClass(RequestFactory::class)->addSetup('setMethodOverride', [$config['methodOverride']]);
     $builder->getDefinition('httpRequest')->setFactory($this->prefix('@requestFactory') . '::createHttpRequest');
     $inputFactory = $builder->addDefinition($this->prefix('inputFactory'))->setClass(InputFactory::class)->addSetup('addParser', ['application/json', new JsonParser()]);
     foreach ($config['inputParsers'] as $contentType => $service) {
         $inputFactory->addSetup('addParser', [$contentType, $service]);
     }
 }
コード例 #30
0
 public function afterCompile(Code\ClassType $class)
 {
     parent::afterCompile($class);
     $config = $this->getConfig($this->defaults);
     if ($config['adapter'] === 'imagick') {
         $adapter = 'JiriNapravnik\\Image\\Adapter\\ImagickAdapter';
     } else {
         $adapter = 'JiriNapravnik\\Image\\Adapter\\GdAdapter';
     }
     $init = $class->methods['initialize'];
     $init->addBody('JiriNapravnik\\Image::setAdapter(\'' . $adapter . '\');');
 }