Viditelnost metod presenterů

- uestla
- Backer | 799
Zdravím!
Vrtá mi hlavou, jak je to vlastně s viditelností jednotlivých metod presenterů. V různých kódech vídám totiž různé a nevím, která je „ta správná“.
U částí životního cyklu Presenteru jako startup() nebo
shutdown() vídám jak public, tak
protected. U metod renderAction() zase jenom
public. U továrniček zase protected. U metod
navěšovaných pomocí callbacků např. na $onSubmit formuláře
bývá public.
Mohl by mi to prosím někdo osvětlit, kde se co a proč používá? Díky

- Ondřej Mirtes
- Člen | 1536
Signály, callbacky (to jsou de facto signály), action a render metody: public (může je volat kdokoli a v praxi to tak i je – do URL ti může návštěvník napsat cokoli a zavolá se daná metoda, pokud existuje).
Továrničky, startup, shutdown, beforeRender: protected (jsou to vnitřní záležitosti presenteru, může k nim jen on… a hodí se, aby k nim mohli i jeho předci).

- PetrP
- Člen | 587
Ondřej Mirtes napsal(a):
Signály, callbacky (to jsou de facto signály), action a render metody: public (může je volat kdokoli a v praxi to tak i je – do URL ti může návštěvník napsat cokoli a zavolá se daná metoda, pokud existuje).
Teď když jsou callbacky řešeny přes třídu Callback tak všechny musí být public.
Továrničky, startup, shutdown, beforeRender: protected (jsou to vnitřní záležitosti presenteru, může k nim jen on… a hodí se, aby k nim mohli i jeho předci).
Nejen že se to hodí ale minimálně protected být musí, protože k nim
musí jejich předci jako například Presenter::run() ;]
v6ak napsal(a):
Já public u callbacků považuju trošku za hack, protože jinak by to nefungovalo. (Ono to fungovat dost dobře ani nemůže, protože by php muselo vědět, kdo to pole vytvořil) V php 5.3 to lze řešit anonymní funkcí.
Dříve když se volali pomocí call_user_func a byli ve stejné třídě tak mohly být protected.
Editoval PetrP (17. 2. 2010 13:32)