Kmom06: Databasdrivna modeller
Vi skall titta på klasser i modelllagret och utöka vår ramverksstruktur med formulärhantering via klasser och metoder samt databasdrivna modellklasser där vi använder oss av designmönstret Active Record.
Vi skall använda en extern modul för htmlformulär och vi skall använda en extern modul för databashanteringen.
I arbetet skapar vi basklasser i modellagret som underlättar då vi implementerar applikationsspecifik kod. Vi kan se det som vi bygger upp modellklasser som kan scaffoldas fram. Det blir en form av strukturerad återanvändning och ett försök att effektivisera vårt kodande.
I vårt arbete kommer vi i kontakt med designmönstret Active Record och en implementation av databasen, en query builder som erbjuder metoder för att programmatiskt skapa SQL-koden.
Det blir ett klassiskt exempel med användare, men koden ser annorlunda ut, mot våra tidigare konstruktioner.
Men, utsidan, användargränssnittet ser ut som tidigare.
Vi avslutar med att automatisk generera kod för ett helt CRUD-exempel, det är kraften i scaffolding och rätt använt kan det snabba upp vissa delar i vårt dagliga kodande.
(Detta är instruktionen för kursmomentet och omfattar det som skall göras inom ramen för kursmomentet. Momentet omfattar cirka 20 studietimmar inklusive läsning, arbete med övningar och uppgifter, felsökning, problemlösning, redovisning och eftertanke. Läs igenom hela kursmomentet innan du börjar jobba. Om möjligt – planera och prioritera var du vill lägga tiden.)
#Läs & Studera
(ca: 2-4 studietimmar)
#Artiklar
Kika igenom följande artiklar.
Bekanta dig med begreppet Active record genom att översiktligt titta på Wikipedias information. Se referenserna till implementationer i PHP och välj ut några av dem och titta översiktligt på dem. Du vill skaffa dig en känsla för hur olika ramverk jobbar mot databaser.
Bekanta dig översiktligt med begreppet “Object-relational mapping” via Wikipedia.
Artikeln PHP The Right Way innehåller ett kort stycke om “Abstraction Layers (Databases)”, läs igenom det som en introduktion och kika på de länkar som leder till olika ramverks implementationer av databas-moduler.
#Videor
Kika på följande videor.
- Jag försökte finna en video som visade innebörden av Active Record och fann “Easy PHP Database Handling With PHP ActiveRecord”, kika på den som ett komplement till artiklarna nedan.
#Designmönster
Kika kort på följande designmönster som hanterar varianter av hur man kan mappa objekt mot databasen.
Du hittar fler designmönster i “Catalog of Patterns of Enterprise Application Architecture”. Att studera olika designmönster är ett sätt att bli en bättre programmerare.
#Ramverk referenser
Undersök hur (minst) ett av ramverken jobbar med den hantering som kursmomentet omfattar. Kanske vill du spara detta till sist då du vet mer om begrepp som scaffolding, formulärhantering och designmönstret Active Record. Det kommer frågor du skall besvara under stycket Resultat & Redovisning.
- Dokumentationen för Symfony.
- Dokumentationen för Laravel.
- Dokumentationen för Phalcon.
- Dokumentationen för Yii.
#Anax moduler
I detta kursmoment används främst följande moduler.
Modulernas README kan i vissa delar innehålla värdefull information för den som vill fördjupa sig i hur man jobbar med modulerna.
#Övningar & Uppgifter
(ca: 12-16 studietimmar)
#Övningar
Gör följande övningar, de behövs för att klara uppgifterna som bygger på övningarna.
Jobba igenom artikeln “Anax och formulärhantering-v2” som visar hur du använder en extern modul för formulärhatering och hur du integrerar den i Anax. Du sparar koden i en underkatalog under
me/kmom06
.Jobba igenom artikeln “Anax och databasdrivna modeller (v2)” som visar hur du använder en extern modul för databashantering för att använda dig av designmönstret Active Record för att jobba med formulär och databaser. Du jobbar vidare med samma kodbas som i artikeln ovan.
Fortsätt fördjupa dig i databasdrivna modeller med ett exempel genom att jobba igenom artikeln “Anax med databasdrivna modeller enligt Active Record, ett exempel (v2)”. Du får jobba igenom ett exempel med CRUD som länkar samman formulär med active records. Du får en basstruktur för databasdrivna modellklasser som bygger på formulär. Du jobbar vidare med samma kodbas som i artikeln ovan.
#Uppgifter
Dessa uppgifter skall utföras och redovisas.
Gör uppgiften “Integrera Bok-exemplet i din me-sida”. Uppgiften bygger på de övningsartiklar du jobbat igenom. Ändringar gör du under
me/redovisa
.Pusha och tagga din redovisa, allt eftersom och sätt en avslutande tagg (6.0.*) när du är klar med kursmomentet.
#Resultat & Redovisning
(ca: 2-4 studietimmar)
Läs instruktionen om hur du skall redovisa.
Lägg extra tid på skrivandet i momentet då redovisningstexten är aningen mer omfattande än normalt.
- Hur är din syn på modulen
anax/htmlform
och det koncept som modulen försöker lösa? - Kan du hitta liknande lösningar när du tittar på andra ramverk?
- Berätta om din syn på Active record och liknande upplägg, ser du fördelar och nackdelar?
- När du undersökte andra ramverk, fann du motsvarigheter till Active Record och hur såg de ut?
- Vad tror du om begreppet scaffolding, ser du för- och nackdelar med konceptet?
- Hittade du motsvarighet till scaffolding i andra ramverk du tittade på?
- Hur kan man jobba med enhetstestning när man scaffoldat fram en CRUD likt Book, vill du utvecklar några tankar kring det?
- Vilken är din TIL för detta kmom?
Har du frågor eller funderingar som du vill ha besvarade så ställer du dem i GitHub issues.
#Revision history
- 2018-12-10: (C, mos) Uppdaterad inför ramverk1 v2.
- 2017-09-11: (B, mos) Första releasen med allt klart.
- 2017-09-05: (A, mos) Första utgåvan.