Jak se dostat k datům robot loaderu?

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

Nevíte prosím někdo jak se snadno dostat k cache robot loaderu? Dříve to bylo snadné.

<?php
    public function getRLCacheData
    {
        $cache = Environment::getCache('Nette.RobotLoader');
        $data = array();
        foreach($cache['data']['list'] as $name => $page){
                $data[$name] = $page;
            }
        }
        return $data;
    }
?>

Bohužel dneska je cache uložena pod názvem generovaného klíče. Zkoumal jsem jak se k těmto datům dostává presenterLoader, ale neřišel jsem na nic. Nemá Nette někde ten klíč uloženo? Díky za radu. EDIT: Vzhledem k tomu, že $list ve třídě je private, tak jsem nepřišel na nic jiného než:

<?php
        $cache = Environment::getCache('Nette.RobotLoader');
	$rl = AutoLoader::getLoaders();
        $rld = $rl[0];
        $key = md5("v2|$rld->ignoreDirs|$rld->acceptFiles|" . implode('|', $rld->scanDirs));
        Debug::consoleDump($cache[$key]);
?>

Čistotou to ale zrovna 2× nevoní.

Editoval Vyki (20. 7. 2010 7:49)

norbe
Backer | 405
+
0
-

Dříve jsem také využíval cache RobotLoader, po výše uvedených změnách jsem si na toto vytvořil novou třídu, která si seznam generuje sama. Stačí zkopírovat několik metod a je hotovo. Výhodu to má v tom, že je to trvalé a nemusíš to upravovat při každé změně RobotLoaderu (což byl asi i důvod, proč jsou ta data nyní nedostupná).

redhead
Člen | 1313
+
0
-

Já si to přepsal přímo v Nette, bohužel..

David Grudl
Nette Core | 8139
+
0
-

RobotLoader má od toho metodu getIndexedClasses().

Vyki
Člen | 388
+
0
-

Bezva, takhle to jde lépe, ale nevypadá to moc pěkně

<?php
	$a = AutoLoader::getLoaders();
        $b = $a[0]->getIndexedClasses();
	dump($b);
?>

je ještě nějaká hezčí cesta než se k tomu dostávat přes index pole?

Filip Procházka
Moderator | 4668
+
0
-

tohle je imho čistší

$classes = \Nette\Environment::getService('Nette\\Loaders\\RobotLoader')->getIndexedClasses();

Editoval HosipLan (14. 9. 2010 13:18)