final pro Nette\Application\Presenter::__construct(…)

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

Spousta lidí přepisuje konstruktor a pak se diví proč jim něco nefunguje… Jsem pro to udělat ho final. Startup stačí snad na všechny možné i nemožné případy…

Jan Tvrdík
Nette guru | 2595
+
0
-

Jsem pro. Konstruktor jsem nikdy nepotřeboval.

jansfabik
Člen | 193
+
0
-

Nešlo by tam udělat podobnou kontrolu jako u startupu? Aby to z té vyhozené chyby snadno pochopil i začátečník. (Lepší nějaká hláška typu „použijte startup“ než Compile Error.)

pekelnik
Člen | 462
+
0
-

Kdo přetěžuje konstruktor čehokoliv a nezavolá parent::__construct() je blázen…

Honza Marek
Člen | 1664
+
0
-

jansfabik napsal(a):

Nešlo by tam udělat podobnou kontrolu jako u startupu? Aby to z té vyhozené chyby snadno pochopil i začátečník. (Lepší nějaká hláška typu „použijte startup“ než Compile Error.)

Kdyby na každou obskurní chybu měl umět framework napsat kuchařku, tak by nedělal nic jiného.

David Grudl
Nette Core | 8115
+
0
-

Divení je docela fajn stav ;-)

westrem
Člen | 398
+
0
-

Divení je docela fajn stav ;-)

Ale iba niekedy a iba pre niekoho :P

Kdyby na každou obskurní chybu měl umět framework napsat kuchařku, tak by nedělal nic jiného.

Pravda, ale treba si uvedomit, ze v OOP je bezne nastavovat veci v konstruktore a zaciatocnik, co prilis neprecital o nette a o OOP vie len malo, no ma pocit, ze sa moze do toho s vervou pustit tak spravi presne to, ze zacne nastatovat veci v konstruktore. Preto si nemyslim, ze by bolo blbe prave v tomto pripade zavies podobnu kontrolu ako pri startup metode a preto jansfabik +1

Kdo přetěžuje konstruktor čehokoliv a nezavolá parent::__construct() je blázen

Alebo len nevie, ze to ma urobit, kazdy sme raz zacinali a nikto uceny z neba nespadol

Konstruktor jsem nikdy nepotřeboval.

To nic nemeni na tom, ze sa jedna o teba, a niekto mozno ma potrebu v nom nieco robit (ci uz odovodnenu ale nie)

udělat ho final

Bold statement. Chapem pohnutku, ale pride mi prilis radikalna, oseknut konstruktor niecomu tak zavaznemu ako je presenter. V nom predsa len bezi cela aplikacka a je nosnou castou jej live cycle.

Skor navrhujem aby o tom bola nasledne aj poriadna notice v dokumentacii, ze sa ma zneuzivat startup a nie konstruktor.

Honza Marek
Člen | 1664
+
0
-

westrem napsal(a):

udělat ho final

Bold statement. Chapem pohnutku, ale pride mi prilis radikalna, oseknut konstruktor niecomu tak zavaznemu ako je presenter. V nom predsa len bezi cela aplikacka a je nosnou castou jej live cycle.

Skor navrhujem aby o tom bola nasledne aj poriadna notice v dokumentacii, ze sa ma zneuzivat startup a nie konstruktor.

Nikdo tu nemluví o zrušení konstruktoru, ale o zajištění jeho nepřepsatelnosti. Což jde pomocí final poněkud přímočařeji než pomocí kontroly jako ve startupu.

westrem
Člen | 398
+
0
-

Honza Marek napsal

Asi budem chytat za slovicka (co robim nerad) ale pride mi, ze sme sa nepochopili.

  • ak pouzijes final na konstruktor, automaticky ho odrezes pre potomkov, tzn nemozu mat vlastny
  • pomocou kontroly nikdy nezaistis neprepsatelnost a to nie je ani jej ucelom, ucelom je upozornit na to, ze ak prepises mas volat parent::
paranoiq
Člen | 392
+
0
-

pekelnik napsal(a):

Kdo přetěžuje konstruktor čehokoliv a nezavolá parent::__construct() je blázen…

souhlasím. ani s blbuvzdorností by se to nemělo přehánět. jsem proti tomu, aby mi někdo zakazoval používat vlastní konstruktor nebo kontrolovat zda jsem udělal co jsem udělat měl a plýtval tak zdroji

Patrik Votoček
Člen | 2221
+
0
-

westrem napsal(a):

  • ak pouzijes final na konstruktor, automaticky ho odrezes pre potomkov, tzn nemozu mat vlastny

což je v zásadě v případě presenteru jedno protože startup ho zastoupí a ten je navíc blbuvzdorný. (proto jsem zvolil „finalizaci“)

David Grudl
Nette Core | 8115
+
0
-

Rozumím myšlence, ale jako jediné univerzální, krásné a funkční řešení vidím tohle: udělat nástroj, který projde zdrojáky a zkontroluje, jestli přepisované metody volají parent.

hanakus
Člen | 22
+
0
-

Jsem proti final konstruktoru, je to akorát házení klacků pod nohy těm, kdo si chtějí rozšířit Presenter.

jtousek
Člen | 951
+
0
-

Souhlasím s hanakus. Konstruktor by neměl být finální. Už jednou jsem ho na jednu věc potřeboval (startup v tomhle konkrétním případě nestačil).

phx
Člen | 651
+
0
-

Nejaky prekticky priklad by nebyl? Me se final zamlouva. Nikdy jsem consturctor nepotreboval.