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
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
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
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
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
$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
$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
$myCar->go();
$myCar->turn();
$myCar->stop();
?>