PHP OOP - Klassen en objecten
Een klasse is een sjabloon voor objecten en een object is een instantie van een klasse.
OOP-zaak
Laten we aannemen dat we een klasse hebben met de naam Fruit. Een Fruit kan eigenschappen hebben zoals naam, kleur, gewicht, enz. We kunnen variabelen zoals $name, $color en $weight definiëren om de waarden van deze eigenschappen vast te houden.
Wanneer de individuele objecten (appel, banaan, enz.) worden gemaakt, erven ze alle eigenschappen en gedragingen van de klasse, maar elk object heeft verschillende waarden voor de eigenschappen.
Definieer een klasse
Een klasse wordt gedefinieerd door het class
trefwoord te gebruiken, gevolgd door de naam van de klasse en een paar accolades ({}). Al zijn eigenschappen en methoden gaan binnen de accolades:
Syntaxis
<?php
class Fruit {
// code goes here...
}
?>
Hieronder declareren we een klasse met de naam Fruit die bestaat uit twee eigenschappen ($name en $color) en twee methoden set_name() en get_name() voor het instellen en verkrijgen van de eigenschap $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Opmerking: in een klasse worden variabelen eigenschappen genoemd en functies worden methoden genoemd!
Objecten definiëren
Lessen zijn niets zonder objecten! We kunnen meerdere objecten van een klasse maken. Elk object heeft alle eigenschappen en methoden die in de klasse zijn gedefinieerd, maar ze hebben verschillende eigenschapswaarden.
Objecten van een klasse worden gemaakt met behulp van het new
trefwoord.
In het onderstaande voorbeeld zijn $apple en $banana instanties van de klasse Fruit:
Voorbeeld
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
In het onderstaande voorbeeld voegen we nog twee methoden toe aan de klasse Fruit, voor het instellen en verkrijgen van de eigenschap $color:
Voorbeeld
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - Het $this trefwoord
Het sleutelwoord $this verwijst naar het huidige object en is alleen beschikbaar binnen methoden.
Kijk naar het volgende voorbeeld:
Voorbeeld
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Dus, waar kunnen we de waarde van de eigenschap $name wijzigen? Er zijn twee manieren:
1. Binnen de klasse (door een methode set_name() toe te voegen en $this te gebruiken):
Voorbeeld
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Buiten de klasse (door de eigenschapswaarde direct te wijzigen):
Voorbeeld
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instantievan
U kunt het instanceof
trefwoord gebruiken om te controleren of een object tot een specifieke klasse behoort:
Voorbeeld
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>