private function setupCache(ContainerBuilder $container) { $container->addDefinition($this->prefix('cacheJournal'))->setClass('Nette\\Caching\\Storages\\FileJournal', array($container->expand('%tempDir%'))); $container->addDefinition('cacheStorage')->setClass('Nette\\Caching\\Storages\\FileStorage', array($container->expand('%tempDir%/cache'))); $container->addDefinition($this->prefix('templateCacheStorage'))->setClass('Nette\\Caching\\Storages\\PhpFileStorage', array($container->expand('%tempDir%/cache')))->setAutowired(FALSE); $container->addDefinition($this->prefix('cache'))->setClass('Nette\\Caching\\Cache', array(1 => $container::literal('$namespace')))->addSetup('::trigger_error', array('Service cache is deprecated.', E_USER_DEPRECATED))->setParameters(array('namespace' => NULL)); }
/** * @param \Nette\DI\ContainerBuilder $container * @param array $config */ private function setupTemplating(ContainerBuilder $container, array $config) { $def = $container->addDefinition($this->prefix('templateFilesFormatter'))->setClass('Lohini\\Templating\\TemplateFilesFormatter')->addSetup('$skin', [$config['skin']]); foreach ($config['dirs'] as $dir => $priority) { $def->addSetup('addDir', Validators::isNumericInt($dir) ? [$priority] : [$container->expand($dir), $priority]); } }
public function processExtensions() { for ($i = 0; $slice = array_slice($this->extensions, $i, 1, TRUE); $i++) { $name = key($slice); if (isset($this->config[$name])) { $this->config[$name] = $this->builder->expand($this->config[$name]); } $this->extensions[$name]->loadConfiguration(); } if ($extra = array_diff_key($this->config, self::$reserved, $this->extensions)) { $extra = implode("', '", array_keys($extra)); throw new Nette\InvalidStateException("Found sections '{$extra}' in configuration, but corresponding extensions are missing."); } }
public function setupSystemApplication(ContainerBuilder $container, array $config) { $container->addDefinition($this->prefix('system.application.mailerFormFactory'))->setClass('Venne\\System\\AdminModule\\MailerFormFactory', array(new Statement('@system.admin.configFormFactory', array($container->expand('%configDir%/config.neon'), '')))); $container->addDefinition($this->prefix('system.application.systemFormFactory'))->setClass('Venne\\System\\AdminModule\\AdministrationFormFactory', array(new Statement('@system.admin.configFormFactory', array($container->expand('%configDir%/config.neon'), 'system.administration')))); $container->addDefinition($this->prefix('system.application.applicationFormFactory'))->setClass('Venne\\System\\AdminModule\\ApplicationFormFactory', array(new Statement('@system.admin.configFormFactory', array($container->expand('%configDir%/config.neon'), '')))); $container->addDefinition($this->prefix('system.applicationPresenter'))->setClass('Venne\\System\\AdminModule\\ApplicationPresenter')->addTag(static::TAG_ADMINISTRATION, array('link' => 'Admin:System:Application:', 'category' => 'System', 'name' => 'System settings', 'description' => 'Set up database, environment,...', 'priority' => 15)); }
private function setupLatte(ContainerBuilder $container, array $config) { $this->validate($config, $this->defaults['latte'], 'nette.latte'); $latteFactory = $container->addDefinition($this->prefix('latteFactory'))->setClass('Latte\\Engine')->addSetup('setTempDirectory', array($container->expand('%tempDir%/cache/latte')))->addSetup('setAutoRefresh', array($container->parameters['debugMode']))->addSetup('setContentType', array($config['xhtml'] ? Latte\Compiler::CONTENT_XHTML : Latte\Compiler::CONTENT_HTML))->setImplement('Nette\\Bridges\\ApplicationLatte\\ILatteFactory'); $container->addDefinition($this->prefix('templateFactory'))->setClass('Nette\\Bridges\\ApplicationLatte\\TemplateFactory'); $latte = $container->addDefinition($this->prefix('latte'))->setClass('Latte\\Engine')->addSetup('setTempDirectory', array($container->expand('%tempDir%/cache/latte')))->addSetup('setAutoRefresh', array($container->parameters['debugMode']))->addSetup('setContentType', array($config['xhtml'] ? Latte\Compiler::CONTENT_XHTML : Latte\Compiler::CONTENT_HTML))->setAutowired(FALSE); foreach ($config['macros'] as $macro) { if (strpos($macro, '::') === FALSE && class_exists($macro)) { $macro .= '::install'; } else { Validators::assert($macro, 'callable'); } $latte->addSetup('?->onCompile[] = function($engine) { ' . $macro . '($engine->getCompiler()); }', array('@self')); $latteFactory->addSetup('?->onCompile[] = function($engine) { ' . $macro . '($engine->getCompiler()); }', array('@self')); } if (class_exists('Nette\\Templating\\FileTemplate')) { $container->addDefinition($this->prefix('template'))->setClass('Nette\\Templating\\FileTemplate')->addSetup('registerFilter', array(new Nette\DI\Statement(array($latteFactory, 'create'))))->addSetup('registerHelperLoader', array('Nette\\Templating\\Helpers::loader'))->setAutowired(FALSE); } }
/** * @param \Nette\DI\ContainerBuilder $builder */ private function autowireEvents(Nette\DI\ContainerBuilder $builder) { foreach ($builder->getDefinitions() as $def) { /** @var Nette\DI\ServiceDefinition $def */ if ($this->isAlias($def)) { continue; // alias } if (!class_exists($class = $builder->expand($def->class))) { if (!$def->factory) { continue; } elseif (is_array($class = $builder->expand($def->factory->entity))) { continue; } elseif (!class_exists($class)) { continue; } } if ($def->getImplementType() === 'get') { continue; } $this->bindEventProperties($def, Nette\Reflection\ClassType::from($class)); } }
/** * @param \Nette\DI\ContainerBuilder $builder */ private function autowireEvents(Nette\DI\ContainerBuilder $builder) { $newApi = defined('Nette\\DI\\ServiceDefinition::IMPLEMENT_MODE_GET'); //new in Nette 2.4 foreach ($builder->getDefinitions() as $def) { /** @var Nette\DI\ServiceDefinition $def */ if ($this->isAlias($def)) { continue; // alias } if (!class_exists($class = $builder->expand($def->getClass()))) { if (!$def->getFactory()) { continue; } elseif (is_array($class = $builder->expand($def->getEntity()))) { continue; } elseif (!class_exists($class)) { continue; } } if ($newApi ? $def->getImplementMode() === $def::IMPLEMENT_MODE_GET : $def->getImplementType() === 'get') { continue; } $this->bindEventProperties($def, Nette\Reflection\ClassType::from($class)); } }
private function doSerializeValueResolve(ContainerBuilder $builder, $expression) { if ($expression instanceof Code\PhpLiteral) { $expression = self::resolveExpression($expression); } elseif (substr($expression, 0, 1) === '%') { $expression = $builder->expand($expression); } elseif (substr($expression, 0, 1) === '$') { $expression = new Code\PhpLiteral($expression); } else { if (!($m = self::shiftAccessPath($expression))) { return $expression; // it's probably some kind of expression } else { if ($m['context'] === 'this') { $targetObject = '$this'; } elseif ($m['context'] === 'context' && ($p = self::shiftAccessPath($m['path']))) { if (class_exists($p['context']) || interface_exists($p['context'])) { $targetObject = Code\Helpers::format('$this->_kdyby_aopContainer->getByType(?)', $p['context']); } else { $targetObject = Code\Helpers::format('$this->_kdyby_aopContainer->getService(?)', $p['context']); } $m['path'] = $p['path']; } else { throw new Kdyby\Aop\NotImplementedException(); } $expression = Code\Helpers::format('PropertyAccess::createPropertyAccessor()->getValue(?, ?)', new Code\PhpLiteral($targetObject), $m['path']); } $expression = new Code\PhpLiteral($expression); } return $expression; }
private function setupLatte(ContainerBuilder $container, array $config) { $this->validate($config, $this->defaults['latte'], 'nette.latte'); $latteFactory = $container->addDefinition($this->prefix('latteFactory'))->setClass('Latte\\Engine')->addSetup('setTempDirectory', array($container->expand('%tempDir%/cache/latte')))->addSetup('setAutoRefresh', array($container->parameters['debugMode']))->addSetup('setContentType', array($config['xhtml'] ? Latte\Compiler::CONTENT_XHTML : Latte\Compiler::CONTENT_HTML))->setImplement('Nette\\Bridges\\Framework\\ILatteFactory'); $container->addDefinition($this->prefix('templateFactory'))->setClass('Nette\\Bridges\\ApplicationLatte\\TemplateFactory'); $container->addDefinition($this->prefix('latte'))->setClass('Latte\\Engine')->addSetup('::trigger_error', array('Service nette.template is deprecated.', E_USER_DEPRECATED))->addSetup('setTempDirectory', array($container->expand('%tempDir%/cache/latte')))->addSetup('setAutoRefresh', array($container->parameters['debugMode']))->addSetup('setContentType', array($config['xhtml'] ? Latte\Compiler::CONTENT_XHTML : Latte\Compiler::CONTENT_HTML))->setAutowired(FALSE); $container->addDefinition($this->prefix('template'))->setClass('Nette\\Templating\\FileTemplate')->addSetup('::trigger_error', array('Service nette.template is deprecated.', E_USER_DEPRECATED))->addSetup('registerFilter', array(new Nette\DI\Statement(array($latteFactory, 'create'))))->addSetup('registerHelperLoader', array('Nette\\Templating\\Helpers::loader'))->setAutowired(FALSE); }
function afterCompile(ContainerBuilder $container, Nette\Utils\PhpGenerator\ClassType $class) { $initialize = $class->methods['initialize']; if (isset($container->parameters['tempDir'])) { $initialize->addBody($this->checkTempDir($container->expand($container->parameters['tempDir']))); } foreach ($container->findByTag('run') as $name => $foo) { $initialize->addBody('$this->getService(?);', array($name)); } }