You are browsing the unmaintained documentation for old Nette 2.2. See documentation for current Nette.
Systémový kontejner
Příklad základního systémového kontejneru.
<?php
class SystemContainer extends Nette\DI\Container
{
public function __construct()
{
parent::__construct(array(
'appDir' => '...',
'wwwDir' => '...',
'tempDir' => '...',
'debugMode' => TRUE,
'consoleMode' => FALSE,
'environment' => 'development',
));
}
/**
* @return Nette\Application\Application
*/
public function createServiceApplication()
{
$service = new Nette\Application\Application(
$this->getService('nette.presenterFactory'),
$this->getService('router'),
$this->getService('httpRequest'),
$this->getService('httpResponse')
);
$service->catchExceptions = FALSE;
$service->errorPresenter = 'Error';
Nette\Bridges\ApplicationTracy\RoutingPanel::initializePanel($service);
$this->getService('nette.bar')->addPanel(new Nette\Bridges\ApplicationTracy\RoutingPanel(
$this->getService('router'), $this->getService('httpRequest'), $this->getService('nette.presenterFactory')
));
return $service;
}
/**
* @return Nette\Caching\Storages\FileStorage
*/
public function createServiceCacheStorage()
{
$service = new Nette\Caching\Storages\FileStorage('...', $this->getService('nette.cacheJournal'));
return $service;
}
/**
* @return Nette\Database\Connection
*/
public function createServiceDatabase__default()
{
$service = new Nette\Database\Connection('mysql:host=127.0.0.1;dbname=test', NULL, NULL, array('lazy' => TRUE));
Tracy\Debugger::getBlueScreen()->addPanel('Nette\\Bridges\\DatabaseTracy\\ConnectionPanel::renderException');
Nette\Database\Helpers::createDebugPanel($service, TRUE, 'default');
return $service;
}
/**
* @return Nette\Database\Context
*/
public function createServiceDatabase__default__context()
{
$service = new Nette\Database\Context($this->getService('database.default'), new Nette\Database\Reflection\DiscoveredReflection($this->getService('database.default'), $this->getService('cacheStorage')), $this->getService('cacheStorage'));
return $service;
}
/**
* @return Nette\Http\Request
*/
public function createServiceHttpRequest()
{
$service = $this->getService('nette.httpRequestFactory')->createHttpRequest();
if (!$service instanceof Nette\Http\Request) {
throw new Nette\UnexpectedValueException('Unable to create service \'httpRequest\', value returned by factory is not Nette\\Http\\Request type.');
}
return $service;
}
/**
* @return Nette\Http\Response
*/
public function createServiceHttpResponse()
{
$service = new Nette\Http\Response;
return $service;
}
/**
* @return Nette\Caching\Storages\FileJournal
*/
public function createServiceNette__cacheJournal()
{
$service = new Nette\Caching\Storages\FileJournal('...');
return $service;
}
/**
* @return Nette\Http\Context
*/
public function createServiceNette__httpContext()
{
$service = new Nette\Http\Context($this->getService('httpRequest'), $this->getService('httpResponse'));
return $service;
}
/**
* @return Nette\Http\RequestFactory
*/
public function createServiceNette__httpRequestFactory()
{
$service = new Nette\Http\RequestFactory;
$service->setProxy(array());
return $service;
}
/**
* @return Nette\Bridges\ApplicationLatte\ILatteFactory
*/
public function createServiceNette__latteFactory()
{
return new SystemContainer_Nette_Bridges_ApplicationLatte_ILatteFactoryImpl_nette_latteFactory($this);
}
/**
* @return Nette\Mail\SendmailMailer
*/
public function createServiceNette__mailer()
{
$service = new Nette\Mail\SendmailMailer;
return $service;
}
/**
* @return Nette\Application\PresenterFactory
*/
public function createServiceNette__presenterFactory()
{
$service = new Nette\Application\PresenterFactory('...', $this);
$service->setMapping(array(
'*' => 'App\\*Module\\Presenters\\*Presenter',
));
return $service;
}
/**
* @return Nette\Bridges\ApplicationLatte\TemplateFactory
*/
public function createServiceNette__templateFactory()
{
$service = new Nette\Bridges\ApplicationLatte\TemplateFactory(
$this->getService('nette.latteFactory'),
$this->getService('httpRequest'),
$this->getService('httpResponse'),
$this->getService('user'),
$this->getService('cacheStorage')
);
return $service;
}
/**
* @return Nette\Http\UserStorage
*/
public function createServiceNette__userStorage()
{
$service = new Nette\Http\UserStorage($this->getService('session'));
return $service;
}
/**
* @return Nette\Application\IRouter
*/
public function createServiceRouter()
{
$service = $this->getService('23_App_RouterFactory')->createRouter();
if (!$service instanceof Nette\Application\IRouter) {
throw new Nette\UnexpectedValueException('Unable to create service \'router\', value returned by factory is not Nette\\Application\\IRouter type.');
}
return $service;
}
/**
* @return Nette\Http\Session
*/
public function createServiceSession()
{
$service = new Nette\Http\Session($this->getService('httpRequest'), $this->getService('httpResponse'));
$service->setExpiration('14 days');
return $service;
}
/**
* @return Nette\Security\User
*/
public function createServiceUser()
{
$service = new Nette\Security\User($this->getService('nette.userStorage'), $this->getService('22_App_Model_UserManager'));
Tracy\Debugger::getBar()->addPanel(new Nette\Bridges\SecurityTracy\UserPanel($service));
return $service;
}
public function initialize()
{
date_default_timezone_set('Europe/Prague');
Nette\Bridges\Framework\TracyBridge::initialize();
Nette\Caching\Storages\FileStorage::$useDirectories = TRUE;
$this->getByType("Nette\Http\Session")->exists() && $this->getByType("Nette\Http\Session")->start();
header('X-Frame-Options: SAMEORIGIN');
header('X-Powered-By: Nette Framework');
header('Content-Type: text/html; charset=utf-8');
Nette\Utils\SafeStream::register();
Nette\Reflection\AnnotationsParser::setCacheStorage($this->getByType("Nette\Caching\IStorage"));
Nette\Reflection\AnnotationsParser::$autoRefresh = TRUE;
}
}
final class SystemContainer_Nette_Bridges_ApplicationLatte_ILatteFactoryImpl_nette_latteFactory implements Nette\Bridges\ApplicationLatte\ILatteFactory
{
private $container;
public function __construct(Nette\DI\Container $container)
{
$this->container = $container;
}
public function create()
{
$service = new Latte\Engine;
$service->setTempDirectory('...');
$service->setAutoRefresh(TRUE);
$service->setContentType('html');
return $service;
}
}