OOPHP: Klasstruktur, "Ta bort" property från child class

Permalänk

OOPHP: Klasstruktur, "Ta bort" property från child class

Skriver en webbapp i OOPHP för att öva på att tänka objektorienterat. Det är mycket möjligt att det inte är optimalt för den här typen av projekt men jag vill konvertera appens proceduriella kod objektorienterad sådan.

Kort beskrivet är appen en slags kalkylator där användaren skriver in värden i form-inputs som sedan skickas via get och så spottar appen ur sig resultaten av beräkningarna.

Dold text

Har varit inne på att dela in formulärets olika delar i klasser. Är dock nästan övertygad om att det finns ett bättre sätt; I sådana fall skulle jag ha en klass Input med argument för type, name och value i konstruktorn. Vidare en child class Submit, Number etc. Väldigt omständigt med andra ord.
Min första tanke var därför att även ha med exempelvis placeholder som argument i konstruktorn för Input och sedan ta bort den för child class Submit men kom inte på något sätt att göra detta på annat än att skriva om hela konstruktorn för Submit och det kändes inte särskilt DRY...

Bör alltid en parent class vara "enklare" än dess child classes? Bör samtliga child classes ha "allting" i parentclassen gemensamt? Kanske en väldigt basic fråga men skulle underlätta en hel del att få ett definitivt svar.

Så till vad som är vettigt att göra; Bör jag till exempel lägga hela formuläret i en klass eller till och med hela sidan? Är tacksam för all konstruktiv input och funderingar. Som sagt, det kanske inte är optimalt projekt att applicera ett oo-tänk på men vill ändå göra ett försök, och då göra det så rätt det går.

Permalänk
Legendarisk

Syftet med arv är att låta basklassen deklarera de element som delas av underklasserna, om du har egenskaper i basklassen som inte är relevanta för dessa kan du förbättra strukturen. Notera även att underklasser alltid ska följa interfacet som basklassen deklarerade.

Var inte rädd för att skapa många klasser, använd autoloadern och lägg alla i enskilda filer så att de blir lätta att hålla reda på.

Det är bättre att ha många små klasser med tydliga syften än färre men större klasser som försöker ha flera ansvarsområden. Undvik dock att skapa för djupa arvskedjor. Det är vanligt när man börjar med OOP att försöka använda arv till allt, men det är oftast bättre att kombinera separata objekt än att lägga till funktionalitet via arv.

Skickades från m.sweclockers.com

Visa signatur

Abstractions all the way down.

Permalänk
Skrivet av Tunnelsork:

Syftet med arv är att låta basklassen deklarera de element som delas av underklasserna, om du har egenskaper i basklassen som inte är relevanta för dessa kan du förbättra strukturen. Notera även att underklasser alltid ska följa interfacet som basklassen deklarerade.

Tack Tunnelsork för ett kanonbra svar. Skall "implementera" detta i projektet.

Fler tankar välkomnas!

Permalänk
Medlem
Skrivet av Lakritsugglan:

Bör alltid en parent class vara "enklare" än dess child classes?

Din basklass behöver absolut inte vara "enklare" än de klasser som ärver.

Skrivet av Lakritsugglan:

Bör samtliga child classes ha "allting" i parentclassen gemensamt?

Ja. Det är ju ingen med läderpiska som kommer om du gör motsatsen, men det strider lite mot principen med arv

Visa signatur

In order to understand recursion, one must first understand recursion