Introduksjon til OOP i PHP
Nå skal vi sette i gang med å lære om OOP i PHP. La oss se på et eksempel fra virkeligheten, og deretter overføre det til PHP.
Som et eksempel tar vi en bil. Den har hjul, farge, karosseritype, motorvolum og så videre. I tillegg kan sjåføren gi den kommandoer: kjøre, stoppe, svinge til høyre, til venstre osv.
Man kan si at det finnes en slags klasse av biler, som besitter felles egenskaper (alle har hjul og alle kan gis kommandoer).
En konkret bil som står på gata - er en representant for denne klassen, eller, med andre ord, et objekt av denne klassen. Alle objekter i denne klassen har egenskaper: antall hjul, farge, karosseritype og metoder: kjøre, stoppe, svinge til høyre, til venstre.
Med andre ord er selve klassen en tegning, som bilfabrikken lager biler etter. Objektet er selve bilen, laget etter disse tegningene.
I PHP opprettes en klasse med nøkkelordet
class, etterfulgt av navnet på denne klassen.
La oss lage klassen Car:
<?php
class Car
{
// her koden, altså PHP-tegningen av bilen
}
?>
La oss nå spesifisere i tegningen vår at enhver bil, skapt etter denne tegningen, vil ha en egenskap for farge og en egenskap for mengden drivstoff.
For å gjøre dette, skriver vi inn egenskapen
$color og egenskapen $fuel inni klassen:
<?php
class Car
{
// Definerer egenskaper (i bunn og grunn variabler for klassen):
public $color; // bilens farge
public $fuel; // mengde drivstoff
}
?>
La oss nå lage metodene til klassen vår.
I PHP deklareres metoder, på samme måte som vanlige funksjoner,
med nøkkelordet function,
foran dette skrives nøkkelordet
public.
Som nevnt tidligere, kan bilen vår kjøre, den kan svinge, den kan stoppe. La oss lage tilsvarende metoder i klassen vår:
<?php
class Car
{
public $color; // bilens farge
public $fuel; // mengde drivstoff
// Kommandoen kjøre:
public function go()
{
// noe PHP-kode
}
// Kommandoen svinge:
public function turn()
{
// noe PHP-kode
}
// Kommandoen stoppe:
public function stop()
{
// noe PHP-kode
}
}
?>
Vi har laget tegningen av bilen vår. Nå må vi dra til fabrikken og lage et objekt av denne klassen (altså en konkret bil).
I PHP gjøres dette med nøkkelordet
new, etterfulgt av klassens navn:
<?php
new Car;
?>
Men, hvis man bare oppretter et objekt av klassen - fører det ikke til noe (det er det samme som for eksempel å deklarere en array uten å lagre den et sted). Vi trenger en variabel for å lagre dette objektet.
La denne variabelen hete $myCar
- la oss lagre det opprettede objektet vårt i den:
<?php
$myCar = new Car;
?>
Etter at bilen er opprettet, kan man ta kontakt
med dens egenskaper. Tilgang til dem skjer
via pilen ->. La oss sette
egenskapene til objektet vårt:
<?php
$myCar = new Car; // kommanderer fabrikken til å lage en bil
// Setter objektets egenskaper:
$myCar->color = 'red'; // maler den rød
$myCar->fuel = 50; // fyller på drivstoff
?>
Alt, bilen vår er opprettet, malt og fylt med drivstoff. Nå kan vi gi den kommandoer via denne bilens metoder.
Tilgang til metoder skjer også via pilen, men i motsetning til egenskaper, følger man navnet på metoden med runde parenteser. La oss gi kommandoer til objektet vårt:
<?php
$myCar->go();
$myCar->turn();
$myCar->stop();
?>