Kmom04: Modul på Packagist

By . Latest revision .

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 “Semantic 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

Dessa uppgifter skall utföras och redovisas.

  1. Gör uppgiften “Bryt ut din kod till en modul och publicera på Packagist”. Koden för modulen sparar du i me/module.

  2. Pusha och tagga din me/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, utmaningar eller annat värt att nämna?
  • 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 din egen 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?

PS. Lägg in länken till modulen i din redovisningstext.

Har du frågor eller funderingar som du vill ha besvarade så ställer du dem i GitHub issues.

#Revision history

  • 2020-11-30: (D, mos) Förtydliga hur taggning skall ske.
  • 2018-11-22: (C, mos) Övning nu klar.
  • 2018-11-19: (B, mos) Tidigare kmom06, nu kmom04 i ramverk1 v2. Övnings saknas.
  • 2017-09-11: (A, mos) Preliminär release, artikel saknas.

Document source.