Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 15. 12. 2018, 14:18:55
Zdravím,
mám jednoduchou funkci spl_autoload_register spl_autoload_register(function($file) { require_once str_replace('\\', '/', $file) . '.php'; }); U tříd, které si vytvářím sám, je vše v pořádku. Na začátek třídy dám namespace , kde se třída nachází a při volání třídy poté použiji $class = new \system\controller\Front(); .
Ale problém je u externích tříd, které chci do projektu zaintegrovat. Jak postupovat u nich? Na začátek třídy není problém přidat také namespace, ale už si moc nedokážu představit procházet všechny soubory knihovny a hledat, zda-li se někde nevolá třída z knihovny a tam upravovat její volání z $class = new Class(); na potřebné $class = new \namespace\folder\Class(); .
Jak se toto řeší v praxi? |
||
pcmanik Profil |
#2 · Zasláno: 15. 12. 2018, 17:53:05
Sylar:
V praxi sa to rieši Composer-om. |
||
Sylar Profil |
pcmanik:
Díky, když tedy budu knihovny instalovat přes composer, nebude třeba v nich nic upravovat a výše uvedená funkce spl_autoload_register() je v pohodě "použije", ano? |
||
pcmanik Profil |
#4 · Zasláno: 15. 12. 2018, 19:46:15
Sylar:
spl_autoload_register bude služiť len na načitanie tvojich tried. O načítanie externých knižnic sa postará composer resp. autoloader obsiahnutý v ňom. Pozri si nejaký jednoduchý tutoriál je to tam vždy pekne vysvetlené :) |
||
Sylar Profil |
#5 · Zasláno: 15. 12. 2018, 20:08:50
pcmanik:
A autoloader tedy jednoduše naincludu někam (třeba) do indexu? Ještě jeden dotaz, pokud daná knihovna není k dispozici přes composer (pokud se jedná třeba jen o jednoduchou třídu o jednom souboru), tak tu musím také includovat, stejně jako autoloader, že? |
||
pcmanik Profil |
Sylar:
„A autoloader tedy jednoduše naincludu někam (třeba) do indexu?“ Presne tak, v každom tutoriály je ukázané že stačí do indexu vložiť require 'vendor/autoload.php'; Pri správnej štruktúre projektu by to malo byť len na jednom mieste.
„Ještě jeden dotaz, pokud daná knihovna není k dispozici přes composer (pokud se jedná třeba jen o jednoduchou třídu o jednom souboru), tak tu musím také includovat, stejně jako autoloader, že?“ V tom prípade by som si našiel alternatívu. Daná knižnica bude takmer na isto zastaraná / neaktualizovaná. Dnes totiž hádam 99.9% projektov využíva composer na riešenie závislostí. Už len pre možnosť rýchlej aktualizácie príkazom composer update vs. nájdenie knižnice na internete, jej stiahnutie, skopírovanie do projektu je to riadna úspora času, ktorá sa priamo úmerne zvyšuje počtom závislostí. |
||
Sylar Profil |
#7 · Zasláno: 15. 12. 2018, 20:44:19
pcmanik:
Díky moc za info, posunul jsi mě z místa :) |
||
Časová prodleva: 6 let
|
0