config.neon a jeho sekce nette
- nanuqcz
- Člen | 822
Ahoj, chtěl bych se zeptat, co je to za novou sekci nette
,
která teď přibyla v konfiguračním
souboru v sandboxu?
K čemu slouží? Co všechno může obsahovat?
Díky za odpovědi :-)
- Tharos
- Člen | 1030
Slouží ke konfiguraci základních
Nette služeb. Ty jsou nyní do kontaineru registrovány právě pomocí
extenze kompileru NetteExtension
(tzn. potomka
Nette\Config\CompilerExtension
).
Jinými slovy se dá říct, že slouží ke konfiguraci extenze Nette.
Doporučuji také přečíst si tuhle stať od HosipLana. No a pak je celá koncepce IMHO dobře čitelná v samotných zdrojácích…
Edit: Ještě k tomu, co může obsahovat… V podstatě
může přetěžovat direktivy uvedené v tomto
poli. Je to velmi praktické, tohle se IMHO Davidovi opravdu povedlo. Dá se
takto například nakonfigurovat připojení k databázi (využívající
Nette\Database
), výchozí chybové hlášky u formulářů a
spousta dalšího…
Editoval Tharos (26. 1. 2012 0:57)
- nanuqcz
- Člen | 822
Aha, chápu díky :-)
Co mi ale nedává moc smysl, je tento
řádek – kde se přímo ve frameworku tato hodnota database
používá? Měl jsem za to, že se používá uvnitř mojí aplikace, když se
Nette\Database
potřebuje připojit k databázi. Jak to ale
souvisí s vnitřními službami Nette a kde se tyto údaje přímo uvnitř
frameworku používají?
EDIT: Anebo jinak. Jaké jsou výhody toho, že teď se
údaje k databázi nezadávají do sekce parameters
, ale do sekce
nette
?
Editoval xxxObiWan (26. 1. 2012 1:32)
- Jan Tvrdík
- Nette guru | 2595
xxxObiWan wrote:
EDIT: Anebo jinak. Jaké jsou výhody toho, že teď se údaje k databázi nezadávají do sekce
parameters
, ale do sekcenette
?
Koukni se ještě jednou sem.
- nanuqcz
- Člen | 822
Omlouvám se, špatně jsem se zeptal :-)
Jaká je výhoda toho, že se služba database
nevytváří takto?
services:
database: Nette\Database\Connection("%database.driver%:host=%database.host%;dbname=%database.dbname%", %database.user%, %database.password%)
Tento způsob mi prostě přišel přímočarý a přehledný. Vím, že ho můžu používat stále, ale zajímá mě, jaké výhody má ten způsob nový ;-)
- Tharos
- Člen | 1030
Jde skutečně jen o myšlenkový posun, kdy nově je služba
database
již v systémovém kontejneru
předregistrována.
To řešení v sandboxu je dost obecné. Skutečný efekt by to mělo až
v případě, že bys například ještě někde jinde v aplikaci potřeboval
použít přístupové údaje do databáze (příklad mě bohužel
nenapadá…). Anebo v případě, že bys chtěl například použít více
databázových layerů zároveň. V jiných případech můžeš samozřejmě
tu část database
v sekci parameters
úplně smazat
(a tím pádem sekci parameters
třeba i úplně zrušit) a údaje
vepsat rovnou do sekce nette
.
Tím vznikne srovnatelně krátký zápis, jako ten Tebou uvedený, a rozdíl je pouze ten, že ve Tvé ukázce definuješ celou službu, zatímco nově definuješ pouze nastavení té služby.
- Tharos
- Člen | 1030
xxxObiWan napsal(a):
Co mi ale nedává moc smysl, je tento řádek – kde se přímo ve frameworku tato hodnotadatabase
používá?
Abych odpověděl ještě na tohle… Používá se zde. Funguje to tak, že existují nějaké defaultní hodnoty (zde právě takovéto, protože jaké defaultní hodnoty vymyslet u připojení do databáze, že…), které je možné přetížit vlastními. Hodnoty, které se mají použít (tzn. mix defaultních a přetížených) se získává zde, přičemž důležitý řádek je také tento, kde se právě mixují hodnoty získané z Tvého konfiguračního souboru s výchozími (tak aby, ve výsledku žádná hodnota nechyběla).
- nanuqcz
- Člen | 822
Díky za všechny odpovědi :-)
P.S. David založil v noci toto vlákno, tak se odteď kdyžtak budu ptát tam