Autor Zpráva
Sylar
Profil
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
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
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
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
pcmanik:
Díky moc za info, posunul jsi mě z místa :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0