Autor Zpráva
Bertram
Profil
Ahoj,
pokouším se vytvořit vlastní třídu pro automatické načítání tříd a stojím před problémem, kdy mám soubor v němž je třída uložená, ale nevím, jak s toho souboru načíst název třídy včetně jmenného prostoru.
Předpokládejme, že:
- název souboru != název třídy
- potřebuji i jmenný prostor, abych mohl vytvořit objekt ReflectionClass('Namespace\Class');

Zkoušel jsem například token_get_all, ale to dolování by bylo obtížné, nebo nevím jak na to rychle a jednoduše, to víte samouk samotář.
Regulární výrazy, jsem do toho zatím netahal, protože doufám, že to půjde jednodušeji.

No a také je možné, že na to jdu špatně již od základu, tak budu vděčný za každý názor/radu.
Majkl578
Profil
Existuje jakási konvence, PSR-0, která říká, že soubor se má jmenovat jako třída a cesta jako její namespace. Autoloader se pak dá udělat celkem primitivně. Případně se podívej na implementaci aut-loaderu Nette\Loaders\Robotloader, který dělá to co chceš (tedy projde soubory a hledá třídy/interface/traity).
Bertram
Profil
Majkl578:
Děkuji, začnu tou jednoduší variantou a tu druhou se pokusím pochopit.
Jen jeden poddotaz, je to v Nette bez dané konvence kvůli redbulu (dává křídla), nebo je za tím víc?
Nox
Profil
Tak funguje to potom pro cokoli... jako třeba pro rebely

Osobně taky nemám ve vlastních souborech PSR-0, takže používám RobotLoader

Nette pro sebe samotné používá Loader na bázi výčtu, jelikož je to skoro PSR-0, ale ne úplně (třeba exceptions)

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: