Vyřeznení balíčku v composeru z autoloadu

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

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

enumag
Člen | 2118
+
0
-

Composer používá autoloading, tj. pokud ten balíček nemá autoloading špatně nakonfigurovaný tak se ti načte jen to co se zrovna použije. Nevidím důvod proč to vyřazovat i z autoloadu.

Editoval enumag (5. 8. 2015 10:44)

ChocoTUx
Člen | 31
+
0
-

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

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.

ChocoTUx
Člen | 31
+
0
-

Děkuji za osvětlení. A composer vytváří classmapu nebo spoléhá na PSR konvenci?

jiri.pudil
Nette Blogger | 1029
+
+1
-

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)

ChocoTUx
Člen | 31
+
0
-

Super už v tom mám jasno.

Děkuji