CMS-kursen

Objekt i arrayer

Samla flera objekt i en array, till exempel alla bilar i ett garage.

Ett garage med bilar

Ett program har sällan bara ett objekt. Oftast har du en samling: alla bilar i ett garage, alla rum i ett bokningssystem. Samlingen är en vanlig array där varje element är ett objekt.

Nå ett objekt i arrayen

Du når ett enskilt objekt med dess index, och anropar sedan en metod med ->:

echo $garage[0]->info();    // första bilen
echo $garage[3]->marke;     // märket på den fjärde bilen

$garage[0] är ett Bil-objekt, så allt du kan göra med en bil kan du göra med $garage[0].

Prova själv

  1. Skriv ut bara den sista bilen i garaget. Tips: count($garage) - 1.
  2. Skriv ut alla bilar som är blå eller gröna.
  3. Ta bort den första bilen ur garaget med array_shift() och skriv ut listan igen.
  4. Lägg till metoden lackera($nyFarg) i klassen och lackera om den andra bilen.

Garaget som egen klass

Garaget har också ett ansvar: att hålla reda på bilarna. Då kan det vara en egen klass, med arrayen som en privat egenskap:

class Garage {
    private $bilar = [];

    public function stallIn(Bil $bil) {
        $this->bilar[] = $bil;
    }

    public function antal() {
        return count($this->bilar);
    }
}

Bil $bil i parentesen betyder att metoden bara tar emot Bil-objekt. Det här bygger du vidare på i uppgiften.