private \Nette\Application\Route::$metadata → protected?
- JakubJarabica
- Gold Partner | 184
Už sa to raz riešilo: https://github.com/…e/issues/104
Práve som narazil na rovnaký problém. Píšem vlastný router, ktorý má matchovat slugy z databázy, má byť multijazyčný(a budem aj trošku prasák, rovno do target presenteru pošlem vytiahnutú entitu z DB – zatiaľ to mám v dibi, keď to bude v Doctrine tento problém samozrejme odpadne).
V maske chcem vynútiť použitie <lang> a <slug> a v konštruktori mojej routy testovať ich prítomnosť. To isté, čo je tu: Route#232, len pre vlastné konštanty SLUG_KEY a LANG_KEY. Nemôžem k tomu pristupovať v potomkovi, lebo $metadata sú private. Cez extensionMethod to ohackovať(getter) nejde.
Chyba v návrhu mi to nepríde, nakoľko Routa bude pracovať s DB a kešou, bez extendu to rozhodne nechcem robiť(Route je napísaná super a o jej featury prísť nechcem) a kontrolu vyššie by som rád mal tiež. Zatiaľ som si ohackoval Nette.
Vaše názory? Thx :-)
Editoval JAM3SoN (25. 12. 2011 14:21)
- Filip Procházka
- Moderator | 4668
Inspirace: https://github.com/…S/Router.php Nešlo by to takto nějak?
- JakubJarabica
- Gold Partner | 184
Máš iný konštruktor ako ja a parametre pre parent::__construct si vyrábaš v konštruktori potomka.
U mňa sa maska vkladá zvonku v bootstrape(parametre ako v Nette Route + ďalšie vlastné), takže nemôžem predpokladať ako bude vyzerať maska – tá sa posunie konštruktorom parentovi a v potomkovi v $metadata chcem nájsť dané <>, či tam naozaj sú.
- JakubJarabica
- Gold Partner | 184
D'oh! Asi 20 minút som kukal do API a toto som prehliadol :/ Okrem iného to aj tak vyriešim pridaním predvolených hodnôt a túto kontrolu môžem zrušiť. Vďaka! :)