Autor | Zpráva | ||
---|---|---|---|
Bertram Profil |
#1 · Zasláno: 31. 12. 2011, 18:05:16
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 |
#2 · Zasláno: 31. 12. 2011, 18:12:17
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 |
#3 · Zasláno: 31. 12. 2011, 18:36:29
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? |
||
Časová prodleva: 8 dní
|
|||
Nox Profil |
#4 · Zasláno: 8. 1. 2012, 12:13:41
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) |
||
Časová prodleva: 12 let
|
0