vlastni globalni config promenna (pro php i latte)
- luky84
- Member | 16
Cau,
v moji stare aplikaci asi jako kazdy jsem mel config.php v nem treba:
DEFINE('DEBUG', 1);
a pak
$smarty->assign('debug', DEBUG);
takze ve vsech PHP skriptech i sablonach jsem mohl pracovat s DEBUG constantou ci smarty promennou.
Jak mam tohle udelat v Nette? (Nejde konkretne o debug, muze to byt treba defaultLanguage promenna atd..)
Aby to bylo pristupny v latte sablonach a pripane i vsech presenterech.
Teoreticky by to mohlo byt v nejakem neon souboru, ale mohla by byt i varianta ze chci aby ta promenna byla dynamicka, tedy aby to bylo treba i v php souboru. Jaka jsou reseni?
Diky
Last edited by luky84 (2015-07-15 13:57)
- luky84
- Member | 16
A co se tyka tvych odkazu Davide, je nejaky duvod proc je lepsi to delat takto “slozite”? Znam treba dogmatickou myslenku OOP ze by se mely pouzivat treba getter metody misto primeho cteni properties, ale priznejme si, ze to je opruz. A kdyz si clovek porovna tento pripad cteni promennych, pripada mi to jak kanon na vrabce, a v hlave mi rezonuje otazka, proc delat veci slozite kdyz se daji udelat jednoduse (KISS). Aby to nebylo tak ze clovek programuje jadernou elektrarnu kdyz si chce jen precist jeden parameter :). Dik
Last edited by luky84 (2015-07-15 15:36)
- David Kudera
- Member | 455
Chápu :-) je to celkem snadný..
- getContext je deprecated , takže může být smazán (nebo spíš asi úplně znepřístupněn)
- přehlednost, pokud otevřu nějakou třídu, kde mám např.
setDebugMode
metodu, tak vidím, co používá za parametry - pokud třídě musím předat nějaký seznam parametrů (třeba celý di
container), tak se to potom hůř používá samostatně. Nezavolám jednoduše
->setDebugMode(true)
, musím předat celý container - testování, tam se hlavně ukáže bod 3.
- podobnost se službami. Také nechám na autowiringu, aby mi injectnul pouze ty služby, které potřebuji. Nepožívám celý container (klavír), ale jen to, co skutečně potřebuji. Závislost jdou ihned vidět – ale to už je zase 2. bod
Last edited by David Kudera (2015-07-15 16:00)
- luky84
- Member | 16
Aha. No moc tomu nerozumim co pises, pouzivam nette dneska prvni den. jen si rikam kdyby getContext() zmizelo a properta context je skutecna (a public – a to asi ale nebude), dalo by se na ni dal pristupovat i bez existence te get metody. Ale to asi neni dulezite. Dale ja zadnou hlasku deprecated nevidim, tak jako treba nekteri zminovali, a to mam Nette 2.3. Kazdopadne pokusim se teda nejak zorientovat v tom reseni co nabizis.
Jinak co se tyka toho meho zadani, tak predpokladam ze abych toho dosahl, tj zpristupneni tech neon config promennych ve vsech sablonach, asi budu muset tedy pracovat s BasePresenterem, tak uvidim.
Jinak tedy viz muj predchozi comment, predpokladam ze neni jine cesty nez pridat nejakou vlastni promennou viz vyse do sablony, ze Latte nema zadne makro na cteni tech konfiguracnich promennych.
Last edited by luky84 (2015-07-15 17:08)
- David Kudera
- Member | 455
Jj pokud chceš něco předat do všech šablon, tak k tomu je BasePresenter a metoda beforeRender.
Jinak pokud v Nette (ve třídách dědících od Nette/Object) přistupuješ zvenku k nějaké property, která je private a zároveň existuje metoda get<PropertyName>, tak bude zavolána tahle metoda. Něco víc o tom najdeš tady.
A žádné varování o deprecated to nehází, je to napsáno jen v phpDoc, jak jsem posílal dřív..