Kmom04: Modul på Packagist

By . Latest revision .

Welcome early adopters!

Kursmomentet går att genomföra, dock är övningen inte klar/komplett. Övningen ger viss vägledning i hur man kan jobba med en modul mot GitHub och Packagist under stadiet då man bryter ut den modulspecifika koden.

REM servern som ligger till grund för artikeln är heller inte komplett för den version av Anax som vi jobbar med. Den är på gång att snyggas till. Du kan dock utföra uppgiften även utan en komplett REM server som enbart fungerar som exempel på hur en modul kan organiseras och installeras i en Anax installation.

Om du har koll på hur du kan jobba med GitHib och Packagist så klarar du troligen kursmomentet även utan övningen.

Är du osäker så avvaktar du tills denna blåa ruta tagits bort.

Du har hittills jobbat med egen kod inuti en installation av ramverket. Du skall nu skapa en fristående modul av din kod och placera det i ett eget repo på GitHub. Du skall alltså lyfta bort koden från din redovisa-sida och placera allt som modulen behöver i ett eget repo som du publicerar på GitHub.

Du skall sedan publicera repot som en PHP modul på Packagist. När det är klart kan du åter installera modulen i din redovisa-sida med hjälp av composer.

Nu har du en modul med bara din egen kod. Du försöker lösa kodtäckning upp emot 100% av din modul.

När du är klar så har du alltså samma kodbas som från början. Men du har brutit loss en självständig del från din redovisa-sida och gjort den till en egen fristående modul som kan återanvändas även i andra sammanhang. Vi vinner förhoppningsvis en bättre kodstruktur som gör det enklare att jobba med vidareutveckling, underhåll och test av koden.

Så här ser det ut när vi submittar paketet till Packagist.

Submitta ett paket till Packagist genom att ange dess url till GitHub.

Submitta ett paket till Packagist genom att ange dess url till GitHub.

Nu är paketet på plats på Packagist.

Nu är paketet på plats på Packagist.

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

  1. Artikeln PHP The Right Way innehåller ett kort stycke om “Dependency Management”, läs igenom det som en introduktion.

  2. Läs om begreppet “Sematic versioning” som berättar hur du bör hantera versionsnummer på din modul.

  3. Bekanta dig med webbplatsen “Packagist” och skaffa dig ett konto så att du kan publicera din modul. Packagist kommunicerar med GitHub och reagerar så fort du uppdaterar kodbasen på GitHub.

  4. Det skadar inte att färska upp minnet om “dokumentationen för composer” vilket kan komma till användning när du skall publicera din modul till Packagist.

#Ramverk referenser

Undersök hur (minst) ett av ramverken jobbar med paketering, moduler och versionshantering. Är ramverken modulariserade eller är de en “klump av sammanhängande kod”? Kanske måste du gå till respektive ramverks repo för att analysera deras composer-filer.

#Referensmaterial

Följande används som referensmaterial i kursmomentet.

  1. Du kan se hur REm-servern är uppbyggd som modul och hur den kopplar till Packagist.

#Övningar & Uppgifter

(ca: 12-16 studietimmar)

#Övningar

Gör följande övning, de förbereder dig inför uppgiften.

  1. Läs och/eller jobba igenom artikeln “Skapa en PHP-modul på Packagist och integrera med Anax (v2)” som visar dig hur du kan jobba med en installation av Anax när du bryter ut din modul.

#Uppgifter

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

  1. Gör uppgiften “Bryt ut din kod till en modul och publicera på Packagist”. Alla ändringar sparar du i Koden uppdaterar du i me/redovisa.

  2. Pusha och tagga din redovisa, allt eftersom och sätt en avslutande tagg (4.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 gick arbetet med att lyfta ut koden ur redovisa-sidan och placera i en egen modul, några svårigheter?
  • Gick det bra att publicera på Packagist och ta emot uppdateringar från GitHub?
  • Fungerade det smidigt att åter installera modulen i din redovisa-sida med composer, kunde du följa du din installationsmanual?
  • Hur väl lyckas du enhetstesta din modul och hur mycket kodtäckning fick du med?
  • Några reflektioner över skillnaden med och utan modul?
  • Vilket ramverk undersökte du och hur hanterar det ramverket paketering, moduler och versionshantering?
  • 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 forumet.

#Revision history

  • 2018-11-19: (PB1, mos) Tidigare kmom06, nu kmom04 i ramverk1 v2. Övnings saknas.
  • 2017-09-11: (A, mos) Preliminär release, artikel saknas.

Document source.