Kmom01: Objektorientering i PHP

By , . Latest revision .

Kursutveckling pågår

Kursen är under översyn till våren 2019. Större ändringar kommer troligen att ske.

Vi har mycket att göra så det är bäst vi sätter igång. Innan kursen är slut skall vi hantera objektorienterad PHP, enhetstestning, grunder i PHP-baserade ramverk och databaser med ramverk.

Vi börjar med grunderna i objektorienterad PHP, det blir objekt och klasser med inkapsling, konstruktorer och destruktorer, setters och getters, egenskapade exceptions och vi ser hur man kan lagra ett objekt i sessionen.

Vi jobbar i en guide och bygger små enkla testprogram för att testa och se hur konstruktionerna fungerar.

För att repetera våra PHP-kunskaper och komma igång med klasser och objekt så bygger vi en variant av spelet “Gissa vilket nummer jag tänker på”

Vi bygger en me-sida (redovisa-sida) med PHP-ramverket Anax. Det ger oss möjligheten att se ett färdigt ramverk och vi kommer senare i kursen att flytta in vårt spel “Gissa mitt nummer” in i ramverkets struktur.

Här är ett par bilder som visar vad som nu skall hända.

Små testprogram hjälper oss att förstå grunderna.

Små testprogram hjälper oss att förstå grunderna.

Spela spelet Gissa mitt nummer med PHP.

Spela spelet Gissa mitt nummer med PHP.

Mallen för me-sidan i oophp.

Mallen för me-sidan i oophp.

(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.)

#Labbmiljön

(ca: 2-4 studietimmar)

Du behöver minst version 7.2 av PHP.

Det finns en längre beskrivning om kursens labbmiljö. Läs den om du är osäker på vad som skall göras, eller om detta är din första dbwebb-kurs.

Den korta varianten är att du behöver installera labbmiljön, uppdatera dbwebb-cli samt klona och initiera kursrepot.

# Gå till din katalog för dbwebb-kurser
dbwebb selfupdate
dbwebb clone oophp
cd oophp
dbwebb init

#Läs & Studera

(ca: 4-6 studietimmar)

#Bok

Kolla in följande.

  1. I kursboken för htmlphp Webbutveckling med PHP och MySQL kan du repetera dina gamla kunskaper, boken innehåller även delar som är relevanta till PHP med datbaser, dock finns inget om objektorienterad PHP.

  2. Det finns en ny online-bok “PHP Apprentice - An online book for learning PHP” som håller på att utvecklas, den är rätt kort men kanske kan du eventuellt finna den nyttig till en snabb översikt av PHP och objektorienterad PHP.

#Artiklar

Kika igenom följande artiklar.

  1. Fräscha upp ditt minne av PHP genom att snabbt skumma igenom guiden “Kom igång med programmering i PHP”. Du bör sedan tidigare (htmlphp) ha koll på det som nämns i guiden. Om du bygger exempelprogram för att testa och leka så kan du lägga dem i me/kmom01/php20.

  2. Bekanta dig snabbt och översiktligt med PHP manualen och stycket om Klasser och Objekt. Som vanligt är referensmanualen vår källa till information, så bli kompis med dess struktur och lär dig vilken typ av information du där kan hitta.

  3. Bekanta dig översiktligt med dokumentet PHP The Right Way. Det är skrivet av PHP communityn och ger en översikt över PHP som språk och de verktyg och processer man normalt arbetar med. Vi kommer att återkomma till dokumentet under kursens gång.

#Video

Det finns generellt kursmaterial i video form.

  1. Kursen innehåller genomgångar och föreläsningar som spelas in (streamas) och därefter läggs i en spellista. Du kan nå spellistan på “oophp streams vt19”.

  2. Uppgifter och övningar kan innehålla extra videomaterial i form av spellistor kopplade till respektive artikel, ofta syns det i inledningen av artikeln.

#Ramverk Anax

Följande referenser är relevanta för ramverket Anax, studera dem snabbt, kort och översiktligt.

  1. Vi använder ramverket Anax, tillsammans med ett antal andra moduler. Källkoden för Anax finner du på GitHub. Grunden för redovisa-sidan är repot anax-oophp-me.

  2. Vi skriver PHP i enlighet med kodstandarden PSR-1 och PSR-2.

  3. Vi använder valideringsverktygen phpcs och phpmd. Du kan installera dem som linters i Atom för att se valideringsfelen direkt i din texteditor.

#Övningar & Uppgifter

(ca: 8-12 studietimmar)

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas via me-sidan.

  1. I guiden “Kom igång med Objektorienterad programmering i PHP” jobbar du igenom följande delar. Spara koden i me/guide.

  2. Gör uppgiften “Gissa numret med PHP”. Uppgiften låter dig värma upp din gamla PHP-kunskaper och samtidigt träna på grunderna med objekt och klasser. Spara din kod i me/kmom01/guess.

  3. Gör uppgiften “Bygg en me-sida för oophp med Anax”. Du skall bygga en me-sida som du taggar och publicerar på GitHub. Spara allt under me/redovisa.

  4. Försäkra dig om att du har gjort dbwebb publish redovisa och taggat din inlämning med version 1.0.0 (eller högre) samt pushat repot inklusive taggarna till GitHub.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa.

Se till att följande frågor besvaras i texten:

  • Hur känns det att hoppa rakt in i objekt och klasser med PHP, gick det bra och kan du relatera till andra objektorienterade språk?
  • Berätta hur det gick det att utföra uppgiften “Gissa numret” med GET, POST och SESSION?
  • Har du några inledande reflektioner kring me-sidan och dess struktur?

TIL är en akronym för “Today I Learned” vilket leksamt anspelar på att det finns alltid nya saker att lära sig, varje dag. Man brukar lyfta upp saker man lärt sig och där man kanske hajade till lite extra över dess nyttighet eller enkelhet, eller så var det bara en ny lärdom för dagen som man vill notera.

  • Vilken är din TIL för detta kmom?

#Revision history

  • 2019-03-13: (prel, mos) Påbörjat arbete till v5.
  • 2018-03-23: (D, mos) Lade till videoserie för kmom.
  • 2018-03-19: (C, mos) Uppdaterad till oophp v4.
  • 2017-03-27: (B, mos) Länkar till phpcs, phpmd, psr-1, psr-2.
  • 2017-03-24: (A, mos, lew) Första versionen släppt.

Document source.