Používanie BasePresenter s Modulmi
- SontoEremo
- Člen | 341
Zdravím ľudkovia…
Chcem sa Vás spýtať na používanie BasePresenteru s Modulmi
Mám tri moduly:
wwwModule
dahsboardModule
adminModule
a ako iste viete v každom mám zložky presenters a
templates
Rád by som vedeľ či je lepšie používať BasePresenter ako predka
v app/presenters alebo je lepšie v každom danom module vytvoriť pre daný
modul vlastný BasePresenter ?
Alebo to nehrá žiadnu hlavnú rolu a BasePresenter môže ostať
v app/presenters odkiaľ bude volaný ostatnými presentermi v moduloch.
Ja len či to nebude mať dopad na bezpečnosť a okolnosti okolo toho
keďže dashboardModule a adminModule sú takpovediac
privatezóne :)
Editoval SontoEremo (15. 5. 2013 3:05)
- Vojtěch Dobeš
- Gold Partner | 1316
Já s modulem vždycky vytvořím i BasePresenter
, který
dědí od toho z o jedné úrovně výš. Takže společný
BasePresenter
nechť nastavuje společné věci, a jeho potomek v
AdminModule\BasePresenter
nechť doplňuje ověření
uživatelových práv.
- SontoEremo
- Člen | 341
@vojtech.dobes, @Tabetha, @newPOPE
ďakujem za rýchle a priame odpoveďe.
Je dobre, že sa v každom smere môžem obrátiť na toto fórum :)
ĎAKUJEM.
Edit: takže može byť niečo ako
app/presenters/CommandPresenter.php
…Module/presenters/BasePresenter.php
CommandPresenter bude vyzerať
<?php
use Nette\Application\UI\Presenter;
abstract class CommnadPresenter extends Presenter
{
}
A ostatné BasePresenter v moduloch
<?php
namespace ...Module;
class BasePresenter extends CommandPresenter
{
}
alebo aj tam musí byť abstract class …Presenter extends CommandPresenter
Editoval SontoEremo (15. 5. 2013 10:18)
- Grelek
- Člen | 233
Ne, nemusí. Pokud se má BasePresenter
vykonávat,
abstract
tam být nesmí. abstract
znamená, že
z třídy se nikdy nemá vytvářet objekt, tudíž je to jen předloha, která
se nespouští.
EDIT: Opraveno…
Editoval Grelek (15. 5. 2013 10:40)
- SontoEremo
- Člen | 341
@Grelek:
Trochu si ma doplietol tou opravou príspevku :)
Ale tak CommandPresenter abstract môže obsahovať ale už BasePresenter
v Moduloch by nemal obsahovať abstract.
Správne som pochopil?
- SontoEremo
- Člen | 341
Hahah chlapci teraz sme sa nejako doplietli ale vlastne som to
doplietol ja !
@castamir tvojim sandoboxom si dotvrdil čo som sa
pýtal a čo mi @Grelek vytkol
@newPOPE, @castamir, @Grelek
v app/presenters ← CommandPresenter < alias BasePresenter CommandPresenter
extends Nette\Applic.\UI\Presenter
v …Module/presenters ← BasePresenter extends \CommandPresenter
…Module/preseters ← Homepagepresenter extends BasePresenter
BasePresenter a CommandPresenter < abstract oboje
tak to máš aj ty @castamir v každom BasePresenteri či už v
…Module alebo app/presenters
máš abstract class BasePresenter.
a napr. HomepagePresenter už abstract nebude obsahovať.
- castamir
- Člen | 629
@SontoEremo: je na tobě, jakou konvenci použiješ pro název abstraktního presenteru daného modulu (BasePresenter či CommandPresenter nebo úplně jinak). Tento abstraktní presenter není povinný, ale je velice vhodné ho mít, protože ti šetří kód.
Jak už napsal @vojtech.dobes, udělej si jeden abstraktní presenter (nejvyšší úrovně) a do všech modulů (a případně i submodulů) přidej další abstraktní presenter, který dědí od toho o úroveň výš.
Editoval castamir (15. 5. 2013 15:22)