Kde je WWW_DIR a jak se dostat k params[‚wwwDir‘] z helperu
- jarks
- Člen | 94
Dobrý den, nějakou dobu jsem v Nette nedělal a dívám se, že některé (mnohé) věci jsou jinak:
- např.
Debug::consoleDump($x);
→NDebugger::barDump ($x);
- Kde je konstanta WWW_DIR
V index.php
je teď místo
define('WWW_DIR', dirname(__FILE__));
$params['wwwDir'] = __DIR__;
takže jestli jsem to dobře pochopil, dostanu se k tomu
takto $this->context->params['wwwDir'];
- jak se ale dostat k
params['wwwDir']
ze static function?
Mám helper, který ověřuje existenci souboru
public static function fileEx($value) {
$ds = DIRECTORY_SEPARATOR;
if (file_exists($this->context->params['wwwDir'] . $ds . 'dokumenty' . $ds . $value))
return $value . " OK";
else
return $value . " soubor neexistuje";
}
}
Ale celkem logicky zahlásí
Using $this when not in object context
. Když do indexu dám starou
definici konstanty, funguje to s ní samozřejmě dobře. Asi je to neznalost
PHP, ale můžete mi prosím prozradit, jak se ze statické funkce dostanu k
params['wwwDir']
?
A ještě jedna doplňující: Kde by měl ten, kdo nepřetržitě nesleduje vývoj frameworku a napsal pár projektů v PHP 5.2 + Nette 0.9.7 začít, aby mohl pokračovat v PHP 5.3 + Nette 2.0? Je prosím někde skutečně ucelený seznam změn mezi Nette 0.9.7 a Nette 2.0? Zdá se mi, že v tomto: chengelogu není zdaleka všechno.
Díky.
- Jan Voráček
- Člen | 90
@gmvasek: Tahle změna dle githubu proběhla 2. července.
@jarks: Máš v tomhle případě nějaký konkrétní důvod používat statickou funkci? Jejím použitím si podle mě zbytečně vytváříš závislosti mezi třídami. Pokud ji ale opravdu používat chceš, můžeš si i v index.php nadefinovat konstantu WWW_DIR, jako to bylo dřív.
- Patrik Votoček
- Člen | 2221
… Když do indexu dám starou definici konstanty, funguje to s ní samozřejmě dobře. Asi je to neznalost PHP, ale můžete mi prosím prozradit, jak se ze statické funkce dostanu k
params['wwwDir']
?
Možností je více nejjednodušší je přidat si do indexu / bootstrapu konstantu tak jak tomu bylo dříve.
Jednou z dalších možností je nemít helper jako statickou funkci.
A ještě jedna doplňující: Kde by měl ten, kdo nepřetržitě nesleduje vývoj frameworku a napsal pár projektů v PHP 5.2 + Nette 0.9.7 začít, aby mohl pokračovat v PHP 5.3 + Nette 2.0? Je prosím někde skutečně ucelený seznam změn mezi Nette 0.9.7 a Nette 2.0? Zdá se mi, že v tomto: chengelogu není zdaleka všechno.
Finální a kompletní soupis novinek + jak migrovat bude tady: https://doc.nette.org/cs/updating-2-0 problémem je že se ještě nenašel nikdo kdo by to sepsal.
- jarks
- Člen | 94
Díky. Dal jsem si do index.php prozatím zpátky konstantu
define('WWW_DIR', dirname(__FILE__));
. Bohužel nemám čas na
experimenty a potřebuji aby starý kód fungoval.
Ten popis Migrace z verze 0.9 na 2.0 bych moc uvítal. Nette mám rád, velmi mi pomáhá v práci, ale nemůžu nepřetržitě sledovat vývoj. Ani to nemusí být žádné slohové dílo. Stačil by prostý výčet změn, prostě obyčejný changelog.
Mám pár projektů v 0.9 (PHP 5.2), jeden v nějaké 1.0-beta (PHP 5.2) – ty musím doplňovat, udržovat a teď se pokouším udělat další v 2.0-beta (PHP 5.3.5). Docela binec. Moc by se mi hodil soupis změn, do nějž bych nahlížel.
Nosíte všechno v paměti, nebo v živých projektech stále upgradujete framework?
- mkoubik
- Člen | 728
Obecně se mi osvědčilo používat i na produkci co nejaktuálnější
Nette. Jinak se změny hromadí a pocit „ty novinky by se mi hodily, ale
nechce se mi nic předělávat“ sílí. Naprostá většina změn je zpětně
kompatibilní, akorát se občas mění doporučené použití (např.
onSubmit[]
→ onSuccess[]
), ale to není
povinné.
- Mikulas Dite
- Člen | 756
Poznámka pod čarou: Zrona onSubmit
/ onSuccess
je
hodně rozdíl, protože první se pustí i bez ok validace. Jenom kdyby to
četl nováček, ať to nesplete.