[oop] final classes en methods
Ozzie PHP
12/03/2014 14:55:20Ola,
Gebruiken de OOP'ers onder ons wel eens het keyword "final" om te zorgen dat een class niet kan worden ge-extend of een method niet kan worden overschreven?
En zo ja, in wat voor soort situaties gebruik je dat dan? Praktijkvoorbeelden?
Gebruiken de OOP'ers onder ons wel eens het keyword "final" om te zorgen dat een class niet kan worden ge-extend of een method niet kan worden overschreven?
En zo ja, in wat voor soort situaties gebruik je dat dan? Praktijkvoorbeelden?
PHP hulp
23/11/2024 21:34:51Snelle Jaap
12/03/2014 15:50:33Ozzie PHP
12/03/2014 15:53:54Dos Moonen
12/03/2014 16:02:52Ozzie PHP
12/03/2014 16:08:26Dos, ik had al wat leesvoer gevonden, maar ik ben benieuwd of mensen hier op het forum het wel eens gebruiken. Ik lees namelijk nogal wat tegenstrijdige meningen.
Dos Moonen
12/03/2014 16:16:12http://www.phphulp.nl/php/forum/topic/php-hackenuitbereiden-feedback/92987/
Mijn idee was dan om SPL\Type\Scrict\* final te maken, op C niveau de waarde op te slaan zodat deze niet in userland via reflection aan te passen is, en dan de operators te overschrijven zodat het als * (int/float/boolean/string/null) gebruikt kan worden.
Ik zou niet willen dat ze de daar subclasses van kunnen maken omdat ze die dan zouden kunnen misbruiken, net zoals ze reflection zouden kunnen misbruiken.
Mijn idee was dan om SPL\Type\Scrict\* final te maken, op C niveau de waarde op te slaan zodat deze niet in userland via reflection aan te passen is, en dan de operators te overschrijven zodat het als * (int/float/boolean/string/null) gebruikt kan worden.
Ik zou niet willen dat ze de daar subclasses van kunnen maken omdat ze die dan zouden kunnen misbruiken, net zoals ze reflection zouden kunnen misbruiken.
Gewijzigd op 12/03/2014 16:38:09 door Dos Moonen
Ozzie PHP
12/03/2014 16:23:09Ah oke...
Dus in dit geval met name om misbruik te voorkomen.
Ik ben dus wel benieuwd hoe vaak dit in de praktijk gebruikt wordt. Van de ene kant handig omdat de ene class de code van de andere class niet kan verpesten. Maar tegelijkertijd... ook weer beperkend, want je kunt de code niet aanpassen. Iets om goed bij stil te staan dus.
Dus in dit geval met name om misbruik te voorkomen.
Ik ben dus wel benieuwd hoe vaak dit in de praktijk gebruikt wordt. Van de ene kant handig omdat de ene class de code van de andere class niet kan verpesten. Maar tegelijkertijd... ook weer beperkend, want je kunt de code niet aanpassen. Iets om goed bij stil te staan dus.
Reshad F
12/03/2014 18:47:37Final in php eigenlijk nooit. Wel in Java maar dan meestal om een variabele een vaste waarde toe te wijzen.