Introduktion til OOP i PHP

Nu skal vi beskæftige os med at lære OOP i PHP. Lad os se på et eksempel fra livet, og derefter overføre det til PHP.

Som eksempel tager vi en bil. Den har hjul, farve, karrosseritype, motorvolumen og så videre. Derudover kan føreren give den kommandoer: kør, stop, drej til højre, til venstre osv.

Man kan sige, at der findes en vis klasse af biler, der besidder fælles egenskaber (de har alle hjul, og til dem alle kan man give kommandoer).

En konkret bil, der står på gaden - er en repræsentant for denne klasse, eller med andre ord, et objekt af denne klasse. Alle objekter af denne klasse har egenskaber: antal hjul, farve, karrosseritype og metoder: kør, stop, drej til højre, til venstre.

Med andre ord er selve klassen en tegning, som man på fabrikken laver biler efter. Objektet er selve bilen, lavet efter disse tegninger.

I PHP oprettes en klasse med nøgleordet class, efterfulgt af navnet på denne klasse. Lad os lave klassen Car:

php<?php
  class Car
  {
    // her koden, altså PHP-tegningen af bilen
  }
?>

Lad os nu angive i vores tegning, at enhver bil, skabt efter denne tegning, vil have en egenskab for farve og en egenskab for mængden af brændstof.

For at gøre dette skriver vi inden i klassen egenskaben $color og egenskaben $fuel:

php<?php
  class Car
  {
    // Definer egenskaber (i virkeligheden variabler for klassen):
    public $color; // bilens farve
    public $fuel; // mængde brændstof
  }
?>

Lad os nu lave metoder til vores klasse. I PHP deklareres metoder, ligesom almindelige funktioner, med nøgleordet function, foran hvilket der skrives nøgleordet public.

Som nævnt ovenfor kan vores bil køre, den kan dreje, den kan stoppe. Lad os lave tilsvarende metoder i vores klasse:

php<?php
  class Car
  {
    public $color; // bilens farve
    public $fuel;  // mængde brændstof
    
    // Kommandoen kør:
    public function go()
    {
      // en eller anden PHP-kode
    }
    
    // Kommandoen drej:
    public function turn()
    {
      // en eller anden PHP-kode
    }
    
    // Kommandoen stop:
    public function stop()
    {
      // en eller anden PHP-kode
    }
  }
?>

Vi har lavet tegningen af vores bil. Nu er det på tide at tage på fabrikken og lave et objekt af denne klasse (altså en konkret bil).

I PHP gøres dette med nøgleordet new, efter hvilket der skrives klassens navn:

php<?php
  new Car;
?>

Men hvis man blot opretter et objekt af klassen - fører det ikke til noget (det er det samme som f.eks. at deklarere et array og ikke gemme det nogen steder). Vi har brug for en variabel til at opbevare dette objekt.

Lad denne variabel hedde $myCar - lad os gemme det objekt, vi har oprettet, i den:

php<?php
  $myCar = new Car;
?>

Efter oprettelsen af bilen kan man tilgå dens egenskaber. Adgangen til dem sker via en pil ->. Lad os indstille egenskaberne for vores objekt:

php<?php
  $myCar = new Car; // beordrer fabrikken til at lave en bil
  
  // Indstiller objektets egenskaber:
  $myCar->color = 'red'; // maler den rød
  $myCar->fuel = 50; // tanker brændstof
?>

Alt sammen, vores bil er oprettet, malet og tanket. Nu kan vi give den kommandoer via denne bils metoder.

Adgang til metoder sker også via pilen, men i modsætning til egenskaber, skal man efter metodens navn skrive runde parenteser. Lad os give kommandoer til vores objekt:

php<?php
  $myCar->go();
  $myCar->turn();
  $myCar->stop();
?>