funkce $form->getRenderer je final
- arron
- Člen | 464
Ahoj,
Potrebujeme na nasich projektech nejak univerzalne nastavovat renderer
u formularu, a tak jsme si udelali potomka tridy Form ve kterem renderer
nastavujeme. Nejlepsi metodou na prepsani se mi jevi getRenderer()
,
ale narazil jsem na to, ze je final. Je pro to nejaky zavazny duvod? Bylo by
mozne to zmenit?
Diky moc
- Ondřej Mirtes
- Člen | 1536
Jojo, prostě v konstruktoru formuláře uveď
$this->setRenderer(new MyRenderer);
.
- arron
- Člen | 464
Samozrejme, ze to nakonec skoncilo v konstruktoru, ale tam je to de-facto
navic. Uz jenom proto, ze kdyz se formular zpracovava, tak v drtive vetsine
pripadu probehne po zpracovani redirect a v tom pripade se v konstruktoru deje
docela dost veci naprosto zbytecne a navic. Chtel bych takoveto nastaveni dat na
misto, kde je to nejlogictejsi a to je bud $form->render()
, ale
u te je problem, ze se nemusi volat vzdy (napriklad
$form->__toString()
ji nevola) a pak je proste uplne
nejlogictejsi to dat do $form->getRenderer()
, protoze proste
kdyz je renderer potreba, tak se vytvori a nastavi se mu parametry, jake ma mit.
Delat to jindy je podle me spatne.
Proc by melo byt spatne prepisovat gettery? Vzdyt od toho by (mimo jine) prece mely byt, aby se v nich daly delat nejake operace navic nez tupe vraceni nejake hodnoty.
- Ondřej Mirtes
- Člen | 1536
Ty chceš přepsáním getteru dojít k tomu, k čemu slouží setter. Je to prostě divoké.
- v6ak
- Člen | 206
Zapouzdření: Form má v sobě nějaké hodnoty (vlastnosti), které nějak
používá a má je nějakým způsobem uložené a navíc k některým
umožňuje přístup přes getter a/nebo setter metody. Není kdekoli psáno,
že zevnitř k nim musí přistupovat přes getter metody. A navíc,
překrývat public metodu, která je již zamýšlená jako funkční je
takové…
Lehce s tím souvisí i myšlenky typu „buď final, nebo abstract“.
- Honza Marek
- Člen | 1664
v6ak napsal(a):
Lehce s tím souvisí i myšlenky typu „buď final, nebo abstract“.
Takové myšlenky jsou i u metod a nejen u presenterů? Já se vždycky divil, proč jsou lidi líný si překrýt metodu, když potřebují nějakou další funkčnost. A ony jsou za tím myšlenky!
- v6ak
- Člen | 206
No vidím tam i určitou podobnost s (nejen) Presentery.
Ale podobná myšlenka byla přímo vyslovena i pro metody: http://blog.krecan.net/…-api-design/ .