Vlastní PresenterFactory v Nette 2.0.10

- nanuqcz
 - Člen | 822
 
Ahoj,
snažím se napsat si vlastní PresenterFactory, ale nemůžu donutit Nette, aby
ho použil namísto výchozího.
# config.neon
common:
	nette:
		presenterFactory:
			class: MyPresenterFactory
# MyPresenterFactory.php
class MyPresenterFactory extends Nette\Application\PresenterFactory
{
	public function __construct()
	{
		die('MyPresenterFactory::__construct()');
	}
}
Ale žádný die('MyPresenterFactory::__construct()'); se
neprovede. Temp jsem mazat zkoušel :-)
Byla tato feature z Nette odstraněna? Protože podle dokumentace by to mělo fungovat…
Díky

- enumag
 - Člen | 2118
 
@nanuqcz: Do sekce nette: patří
základní (high-level) konfigurace, tedy třeba údaje pro připojení
k databázi. A není to nette.database, ale
nette: \n database: \n .... Pokud bys ale chtěl např. vyměnit
třídu Connection za vlastní implementaci, musel bys to udělat low-level,
takhle:
services:
	nette.database.default:
		class: MyConnection
Tím chci jen ukázat že nette.database v services je také. Jo a
mimochodem nepleť si ty tečky a dvojtečky, ta tečka nemá pro neon
absolutně žádný význam, respektive stejný jako libovolné písmeno název
služby je „nette.presenterFactory“ – nejde to nijak dělit na
části. To nette. je jen prefix (namespace), který
znamená, že tu službu vytvořilo NetteExtension.

- castamir
 - Člen | 629
 
Je to maličko matoucí a to vzhledem k použití u parametrů
	parameters:
		database:
			driver: mysql
			host: ...
			user: ...
a přístup ke konkrétním prvkům parametru database
	nette:
		database:
			user: %database.user%
tadu to skutečně vypadá, že database není jen prefix.
Jasně, k parametrům se přistupuje přes %% a k ostatnímu (služby) přes
@, ale ne každému to hned dojde ;)

- enumag
 - Člen | 2118
 
@castamir: Tak jistě. :-D Mi to došlo až když jsem studoval jak funguje CompilerExtension.
@nanuqcz: Doporučuji ti nastudovat si kód
NetteExtension a naučit se psát vlastní rozšíření. ;-)
Jo a nenech se zmást tím, že některé služby nette (jako router nebo user)
nemají ten nette prefix – to má čistě historický důvod a bude se
to měnit.
Editoval enumag (13. 4. 2013 22:50)