Vyřeznení balíčku v composeru z autoloadu
- ChocoTUx
- Člen | 31
Ahoj,
používám na projektu composer a hodně se mi líbí nejen autoload ale obecně jeho fungování a správa rozšíření (jednoduché updaty atd..).
Mám tady ale nějaké knihovny, které nechci načítat automaticky, jsou
strašně velké a zbytečně by tak zatěžovali server (phpword,phpexcel).
Rád bych je nechal v composeru, ale vyřadil z autoloadu abych si je mohl
volat až je potřebuji, ale nikde se mi nepodařilo dopátrat jak to
composer říct.
A pokud to nejde, mohl bych poprosit o nějakou alternativu kde, jak spravovat tyhle knihovny?
Děkuji.
Roman
- ChocoTUx
- Člen | 31
Jo lazy loading… omlouvám se, stačilo trochu nakopnout.
Každopádně když jsem si procházel ten způsob, tak mi není úplně jasné jak k tomu přistupuje.
V autoloadu mam nastaveny namespace a k němu přiřazenou složku. Autoload si načte pouze namespeca a složku. Až někdo hleda třídu začínající daným namespacem tak teprve prohledá podsložky a zaindexuje všechny třídy a požadovanou naincluduje, nebo rovnou prohledá všechny podsložky a až někdo hledá třídu, tak naincluduje tu hledanou?
Díkec
- jiri.pudil
- Nette Blogger | 1029
To záleží na způsobu autoloadingu. PSR-4 (a s menší obměnou
i starší PSR-0) má jasnou konvenci: co úroveň ve jmenném prostoru, to
úroveň v adresářovém stromu a soubor se jmenuje stejně jako třída
v něm obsažená. Takže když máš namapovaný kořenový namespace
App
na složku app
, pak si pro
App\Foo\Bar\Baz
sáhne rovnou do souboru
app/Foo/Bar/Baz.php
. Alternativně můžeš použít
classmap
, což právě udělá to, že si rekurzivně projde
zadanou složku a vytvoří si mapu tříd a souborů, podobně jako to dělá
RobotLoader v Nette.
- jiri.pudil
- Nette Blogger | 1029
Composer používá obojí, podle toho, co si nastaví autoři jednotlivých
balíčků :) Můžeš ale ručně spustit
composer dump-autoload --optimize
, což ti i PSR mappingy
zkonvertuje do classmapy kvůli rychlejšímu autoloadingu. Hlavně
v produkčním prostředí to přijde vhod.
Editoval jiri.pudil (5. 8. 2015 12:44)