Kde je WWW_DIR a jak se dostat k params[‚wwwDir‘] z helperu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jarks
Člen | 94
+
0
-

Dobrý den, nějakou dobu jsem v Nette nedělal a dívám se, že některé (mnohé) věci jsou jinak:

  1. např. Debug::consoleDump($x);NDebugger::barDump ($x);
  2. 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'];

  1. 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.

Aurielle
Člen | 1281
+
0
-

Konstanta WWW_DIR by měla jít používat i nadále. Sice mám revizi Nette, která ještě konstanty oficiálně používala, ale nevím od té doby o žádných změnách.

Jan Voráček
Člen | 90
+
0
-

@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
+
0
-

… 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
+
0
-

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
+
0
-

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
+
0
-

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.