Kmom01: Objektorientering

By . Latest revision .

I denna kursen skall vi lära oss programmera webbapplikationer på ett objektorienterat sätt med fokus på det arkitekturella designmönstret MVC.

I kurserna htmlphp och design använde vi oss av begreppet vyer, det är V:et i MVC. Vyer är något vi fortsätter använda i detta kursmomentet.

I nästa kursmoment skall vi introducera C:et i MVC, Controller. Men för att lära oss bygga Controllers så behöver vi någorlunda koll på hur klasser och objektorienterad programmering fungerar i PHP. Det får alltså bli huvudsyftet för detta inledande kursmoment.

Vi prövar därför att komma igång med grunderna i objektorienterad programmering i PHP genom att bygga ett antal enklare klasser som vi använder och visar upp i form av ett enklare tärningsspel via ett par webbsidor.

Vi får även möjlighet att repetera begrepp som GET, POST och SESSION som är bra att ha koll på när vi bygger webbapplikationer.

Detta är instruktionen för kursmomentet och omfattar cirka 20 studietimmar. Fokus ligger på uppgifter som du skall lösa och redovisa. För att lösa uppgifterna behöver du normalt jobba igenom övningar och läsanvisningar för att skaffa dig rätt kunskap och förståelse av uppgiftens alla delar. Läs igenom hela kursmomentet innan du börjar jobba.

#Labbmiljö

(ca: 2-4 studietimmar)

Se till att du har kursens labbmiljö installerad.

  1. En översikt av labbmiljön som krävs för att genomföra första kursmomentet.

#Uppgifter & Övningar

(ca: 8-12 studietimmar)

Uppgifter skall utföras och redovisas, övningar är träning inför uppgifterna.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas.

  1. Lös uppgiften “Objektorientering med klasser i PHP”.

#Övningar

Det finns inga övningar i detta kursmoment.

#Läs & Studera

(ca: 2-4 studietimmar)

För att lösa uppgifterna och redovisningen bör du studera enligt följande.

#Föreläsning

Titta igenom följande föreläsningar.

#Kursintroduktion

Introduktion till kursen mvc med kursformalia, innehåll och labbmiljö (slides).

Kursintroduktion (med Mikael).

#Klasser och objekt i PHP

Introduktion till klasser och objekt i PHP, för att komma igång med grunderna i hur man skapar en klass och instansierar ett objekt. Koncept som objekt i sessioner, namespace och autoloader hanteras (slides).

Klasser och objekt i PHP (med Mikael).

#Litteratur

  1. Bekanta dig snabbt och översiktligt med innehållet i PHP-manualen om de delar som är extra relevant i detta kursmoment.

  2. Titta i guiden “Kom igång med Objektorienterad programmering i PHP” och se om den kan hjälpa dig med att förstå grunderna till klassbegreppet i PHP. Välj själv om du enbart använder guiden som läsresurs eller om du kodar dess övningsprogram.

  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. Du kan se dokumentet som en innehållsförteckning till vad en god PHP-programmerare bör ha koll på.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa. Observera att denna kursen skiljer sig från hur du normalt sett lämnar in din redovisningstext.

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

  • Berätta kort om dina förkunskaper och tidigare erfarenheter kring objektorientering. Kanske har du redan nu en uppfattning om det är bra eller ej?

  • Berätta kort om PHPs modell för klasser och objekt. Vilka är de grunder man behöver veta/förstå för att kunna komma igång och skapa sina första klasser?

  • Reflektera kort över den kodbas som användes till uppgiften, hur uppfattar du den?

  • Berätta om ditt spel från uppgiften. Hur löste du uppgiften, är du nöjd/missnöjd, vilken förbättringspotential ser du i koden/spelet, var uppgiften svårt/enkelt/utmanande, håller din kod god/hög kvalitet?

  • Med tanke på artikeln “PHP The Right Way”, vilka delar in den finner du extra intressanta och värdefulla? Är det några särskilda områden som du känner att du vill veta mer om?

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

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.

#Resurser bra-att-ha

Här anges övriga resurser som kan användas för vidare studier i det som kursmomentet omfattar.

#Videor och spellista

Kursen innehåller genomgångar och föreläsningar som spelas in eller streamas och därefter läggs i en spellista.

Du kan nå spellistan på “mvc streams v21”.

#Git & GitHub

Git är ett versionshanteringssystem för kod och GitHub/GitLab är en webbplats där man kan ladda upp sitt Git-repo och använda extra tjänster.

Om Git.

Om GitHub.

Om GitLab.

#Make

Manualen för GNU Make.

#Repetera PHP

Om du känner behov av att repetera PHP så kan följande resurser vara relevant.

  1. Guiden från kursen htmlphp, “Kom igång med programmering i PHP”.

  2. Kursboken som användes i kursen htmlphp, Webbutveckling med PHP och MySQL.

  3. En relativt ny online-bok “PHP Apprentice - An online book for learning PHP” som håller på att utvecklas.

#Kodstandard

Vi använder verktyget phpcs (och phpcbf) för att validera koden enligt kodstandarden PSR-12: Extended Coding Style.

Kodstandarden är överenskommen inom PHP communityn och hanteras av organisationen PHP-FIG vars syfte är att standardisera komponenter så att de går att använda mellan olika ramverk.

PSR-12 har numer ersatt tidigare kodstandarder PSR-1: Basic Coding Standard och PSR-2: Coding Style Guide.

Verktyget phpcbf är en kodstil-fixer som automatiskt kan laga en del av de fel som du får av phpcs.

#Linter och validatorer

Följande linters och validatorer används i olika omfattning.

#Plugin i Atom/Vscode

Vertyg likt phpcs och phpmd går bra att installera i din texteditor som plugins. Det underlättar att få information om dessa fel medan du skriver din kod.

Första gången man installerar kan det dock vara lite klurigt så vi lägger denna delen på överkurs. Pröva gärna när du får tid och kraft.

#Om templatefiler och vyer, V i MVC

I artikeln “PHP The Right Way” finns det ett eget kapitel om vyer och templatefiler som heter “Templating”. Det är bra att läsa igenom det för att få en överblick hur termen vyer och templatfiler hör ihop med V:et i MVC.

#Twig med vyer

I uppgiften används PHP som vymotor, eller template engine. Du kan installera vymotorn Twig och använda den för dina vyer, om du så önskar.

#Revision history

  • 2021-03-29: (B, mos) Lade till läsresurs om Templating.
  • 2021-03-25: (A, mos) Första versionen släppt för mvc-v1.

Document source.