Nastavení RobotLoaderu
- pmg
- Člen | 372
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
Nevýhoda je ta, že s kompaktní verzí se indexují všechny třídy
zbytečně. V nekompaktní verzi se také indexují zbytečně, protože je
aktivní NetteLoader
. Další knihovny mají většinou vlastní
loader a indexují se zbytečně. Existuje možnost zvaná
netterobots.txt
, ale třeba u kompaktních verzí se většina
souborů indexuje zbytečně. Většina presenterů se také indexuje
zbytečně.
Nejde o čas strávený indexací, ale o velikost kešovaného souboru. Zkouším proto přidat nastavení
$loader->acceptFiles = '*.inc.php';
Abstraktní presentery, komponenty a základní třídy knihoven se přejmenují a indexuje se tak jen to potřebné.
Kompaktní verze je asi nejlepší registrovat explicitně v boostrapu.
$loader->addClass('Texy', LIBS_DIR . '/Texy.minified.php');
Ono to neindexování také pomáhá odhalit chyby se špatným pojmenováním souboru s presenterem. Vlákno je záměrně na fóru Obecná diskuse.
- kravčo
- Člen | 721
Pokiaľ viem, klasické indexovanie minimalizovanej verzie by okamžite vyčerpalo pamäť a skončilo chybou – viď diskusiu.
Preto sú minimalizované verzie opatrené zoznamom tried, ktoré sa v nich nachádzajú a indexácia je okamžitá…
Dávnejšie som tiež skúšal konštrukciu:
<?php
require LIBS_DIR . '/Nette/loader.php';
$loader = new RobotLoader;
$loader->addDirectory(APP_DIR);
$loader->register();
// ...
V tomto prípade sa RobotLoaderom indexuje len APP_DIR a Nette samotné sa
načítava NetteLoaderom (spl_autoload_register()
stack). No ak
používam viacero knižníc, je to dosť otravné dopisovať tam includy a
radšej obetujem NetteLoader za pohodlie RobotLoadera…
- pmg
- Člen | 372
Díky za vyjádření a za odkaz. Seznamu tříd v kompaktní verzi jsem si všiml, ale nepodařilo se najít, že by se někde parsoval. (Hledal jsem v distribuci slovo „netteloader“.)
Nicméně jak jsem psal: nejde o čas strávený indexací, ale o velikost kešovaného souboru. Samo Nette soubor moc nezvětší, ale jiné knihovny třeba ano. A v obou případech je to navíc zbytečné.
Mám chuť udělat to jako ty, ale netěší mě, že kešovaný soubor s třídami je s mírnou nadsázkou velký jako celý framework.
- David Grudl
- Nette Core | 8228
V kompaktní verzi by klidně mohlo byt prázdné
//netteloader=
, když už je aktivní RobotLoader, tak jsou
všechny třídy načtené.
V nekompaktní verzi se při zaindexování Nette RobotLoaderem odstaví NetteLoader, kvůli výkonu.