Hur är objektorienterad php-kod tänkt att se ut?
Tjo! Jag har en "enkel(?)" fråga om hur objektorienterad php-kod är tänkt att se ut, för att kunna förstå vad hela tanken med objektorienterad php är. Jag har hittills under min Webbutvecklingsutbildning på distans enbart programmerat funktionellt (JavaScript och just nu php).
Jämför objektorienterad php med att bara ha tonvis med include av diverse enskilda php-filer som kanske innehåller en eller två funktioner som du då skickar ett eller flera argument till som sedan returnerar något som du gör något med.
Vad jag förstår med objektorienterat är att du kan skydda variabler (t.ex. protected $variableName;) för att förhindra buggar från exempelvis samma variabelnamn inom samma scope i php-koden. Och så verkar man kunna använda sig av "datakontroller" inuti olika set- respektive get-klassmetoder för att komma åt och ändra data än att råka skriva $variabelName = "nytt värde"; någon annanstans.
Jag ställer denna fråga då jag upptäckt att projektuppgiften i en av mina två pågående distanskurser inom Webbutvecklingsprogrammet ska lösas med hjälp av objektorienterad php (så jag slipper det inte efter bara ett! ). Databaser ska även användas så jag antar att PDO blir starkt rekommenderat också.
Svar från en lärare i distanskursen om grejen med objektorienteringen inom php var bland annat följande nedan (momentuppgiften rör sig om en Todo App i ett formulär där du kan rensa hela listan och ta bort separata tillagda "Att göra"-saker):
"Jag skulle säga att du lägger lite för mycket av logiken i klassen nu som gör den svår att återanvända. Fokusera på att endast lägga logik som hör till själva "att-göra listan" i klassen, inte hantering av formuläret.
Något som är bra att ha i åtanke är att inte försöka skriva ut så mycket direkt från klassen med echo, utan istället returnera en bool, så du kan styra flödet i moment3.php-filen och därifrån skriva ut eventuella meddelanden. Då blir koden mer modulär."
I mitt senaste inlämnade moment 3 så hade jag bara en klassinstans av klassen och en poäng med OOP är väl att kunna köra olika separata klassinstanser? Men om jag bara behöver köra en klassinstans, varför då ens köra med OOP där? Kan väl upplevas som överflödigt? Nu är det förvisso kurskrav så där kommer jag inte undan, men jag försöker förstå bara!
En sak till jag tänker med OOP som kanske är "Quality of Life" är att baka in mycket "initieringskod" inuti __Konstruktören i respektive klass så att jag bara skickar med initiala värden vid klassinstansiering för att sedan bearbeta dessa med diverse set- & get-klassmetoder i samma klass.
Å andra sidan skulle jag lika gärna kunna ha separata funktioner för detta som jag bara anropar kors och tvärs med samma variabler? Just nu kan jag bara se "buggfriheten" med OOP och inte riktigt det "modulära". Men det är nog för att jag bara har skapat och använt mig av en klass och inte flera som "samverkar" eller "kommunicerar" med varandra än så länge.
Hur skulle du svara på min snurriga fråga kring det hela?!
Tack för svar på förhand!
Mvh,
WKL.