Nevyhovující způsob načítání presenterů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jan Jakeš
Člen | 177
+
0
-

Způsob načítání presenterů v Nette je striktně daný a podle mě naprosto nerozšiřitelný. Už jen pokud chci mít v aplikaci namespaces a v těchto namespaces mít i Presentery, musím si přepsat PresenterFactory. To se dá ještě snést, i když je to podle mě naprosto zbytečně obtěžující záležitost, ale…

Opravdový problém přichází, když mám svůj addon a v něm bych chtěl mít vlastní presentery. Asi mi odpovíte, že mám psát komponenty, ale ty jsou „slabší“ než presentery, musim psát další kód pro jejich vytváření v Presenterech, atd. Hodilo by se tedy mít možnost naroutovat na jakoukoliv třídu. A zase byste mohli odpovědět, že tuto možnost mám a že si můžu přepsat PresenterFactory. Jenže já mám svůj addon, chci ho přidat přes DI jediným řádkem kódu, a jediné, co tento addon může udělat, je přepsat PresenterFactory pomocí DI, což je poněkud… naprosto špatně. (Obvzlášť kdyby se pak o to snažilo více addonů, že…).

Můj dotaz tedy zní – plánuje se na tomto něco měnit?

Nabízí se například použití DI a možnost tahání presenterů z kontejneru, ještě lepší by byla nějaká konvence „Vendor.MyAddon.MyPresenter“, a presentery by byly v jasně definované složce v addonu, ale problém je, že Nette nemá naprosto žádnou základní podporu pro addony a nedefinuje žádné konvence a pak addony vypadají, tak jak vypadají – nejednotnost, bordel, každý addon úplně jiný, každý se úplně jinak instaluje, milion sandboxů na GitHubu, atd. a pro začátečníky je těžké se zorientovat, protože jim nikdo neříká „udělej to přesně takhle“ a teď mě napadá, že už moc odbočuju a asi by to bylo na celé nové téma, možná ho založím :)

Jan Tvrdík
Nette guru | 2595
+
0
-

Juan wrote:

Způsob načítání presenterů v Nette je striktně daný a podle mě naprosto nerozšiřitelný. Už jen pokud chci mít v aplikaci namespaces a v těchto namespaces mít i Presentery, musím si přepsat PresenterFactory.

Řeší 23 dní starý commit.

Jan Jakeš
Člen | 177
+
0
-

Ha, díky, aspoň něco.

Nicméně složky presenters se stejně nezbavím (pokud chci používat složka = namespace) a templates také snadno nepřemístím…

A problém načtení presenterů z mého addonu to vlastně neřeší prakticky vůbec…

Editoval Juan (8. 5. 2012 17:56)

Filip Procházka
Moderator | 4668
+
0
-

Jakto? PresenterFactory hledá ve složkách až potom, co selže autoloading. Tedy tě nějaká adresářová struktura vůbec nezajímá.

Editoval HosipLan (8. 5. 2012 18:19)

juzna.cz
Člen | 248
+
0
-

Pokud mas presentery v addonech, tak jim casto budes chtit nastavit i nejake specialni routy. Mely by se tedy registrovat primo do configuratoru. A behem te registrace muzes nastavit routing, mapovani presenteru a pripadne exponovat dalsi sluzby do systemoveho kontejneru.
Pekne to ma vyresene @HosipLan v Kdyby, rikal o tom i na posledni posledni sobote.

Jan Tvrdík
Nette guru | 2595
+
0
-

Juan wrote: Nicméně složky presenters se stejně nezbavím (pokud chci používat složka = namespace).

Proč bys chtěl používat takovou blbost, jako složka = namespace?

Honza Marek
Člen | 1664
+
0
-

Jan Tvrdík: neflejmuj

Jan Jakeš
Člen | 177
+
0
-

HosipLan: Super, díky.

juzna.cz: Routa, ale vrací pouze jméno modulu, presenteru a parametry, ne přímo třídu, takže by asi zase došlo na modifikaci PresenterFactory. Kdyby celkově řeší spoustu věcí skvěle, ale lidí píší doplňky pro Nette, ne pro Kdyby, takže tak jako tak Nette by zde mělo udávat nějaké standardy a ulehčovat práci.

Jan Tvrdík: Asi se nechápeme? Já mluvím o dodržování PSR-0, to snad není taková blbost:)

Jan Tvrdík
Nette guru | 2595
+
0
-

Juan wrote: Jan Tvrdík: Asi se nechápeme? Já mluvím o dodržování PSR-0, to snad není taková blbost:)

Chápeme, ale Honza Marek mi zakázal odpověď.

Jan Jakeš
Člen | 177
+
0
-

:D