CMS-kursen

Strukturer med associativa arrayer

Allt behöver inte vara klasser. En associativ array räcker långt när du bara ska hålla ihop data.

Data utan klass

En associativ array kan beskriva en sak med flera värden, precis som ett objekt, men utan metoder. Det kallas ibland en struktur.

Strukturer och JSON hör ihop

En array med strukturer går att spara direkt som JSON, och json_decode($json, true) ger tillbaka exakt samma form. Därför är strukturer praktiska för data som ska sparas i en fil.

Array eller klass?

Associativ array Klass
Skapa ["marke" => "BMW"] new Bil("BMW")
Läsa ett värde $bil["marke"] $bil->marke
Egna funktioner Nej Ja, metoder
Skydda data Nej Ja, med private
Stavfel i nyckel Upptäcks först när koden körs Upptäcks av VS Code
Spara som JSON Direkt Publika egenskaper sparas

En tumregel: börja med en array när du bara ska lagra och visa data. Byt till en klass när det finns regler för datan eller funktioner som hör ihop med den.

Från JSON till objekt

Ett vanligt mönster är att spara som JSON men arbeta med objekt i koden. Då skapar du objekten från arrayerna när filen läses in:

$rader = json_decode(file_get_contents("garage.json"), true);

$garage = [];
foreach ($rader as $rad) {
    $garage[] = new Bil($rad["marke"], $rad["farg"]);
}

Prova själv

  1. Lägg till nyckeln "pris" på varje bil och skriv ut det totala värdet på garaget.
  2. Lägg till en fjärde bil i listan med $garage[] = [...].
  3. Skriv om det första exemplet så att det använder klassen Bil från förra lektionen. Vilken version tycker du är tydligast?