Class properties en constanten zijn essentieel voor het definiëren van de staat en het gedrag van objecten en klassen in PHP. In deze tutorial verkennen we hoe je deze concepten effectief kunt gebruiken in je PHP-programma’s.
Wat zijn class properties in php?
Class properties zijn variabelen die binnen een klasse worden gedefinieerd en behoren tot objecten van die klasse. Ze beschrijven de staat van een object.
<?php
class Auto {
public $merk;
public $model;
public function __construct($merk, $model) {
$this->merk = $merk;
$this->model = $model;
}
public function beschrijf() {
return "Deze auto is een $this->merk $this->model.";
}
}
$auto = new Auto("Toyota", "Corolla");
echo $auto->beschrijf(); // Output: Deze auto is een Toyota Corolla.
?>
In dit voorbeeld definiëren we twee public properties $merk
en $model
. Deze worden geïnitialiseerd via de constructor en kunnen worden benaderd en gewijzigd via een object van de klasse.
Toegangsmodificatoren voor properties
Net als bij methodes kun je in PHP ook de toegang tot properties beperken. PHP biedt hiervoor drie toegangsmodificatoren:
- Public: Toegankelijk vanuit elke context.
- Protected: Alleen toegankelijk binnen de klasse zelf en afgeleide klassen.
- Private: Alleen toegankelijk binnen de klasse zelf.
<?php
class Voorbeeld {
public $publiekeEigenschap = "Publiek";
protected $beschermdeEigenschap = "Beschermd";
private $priveEigenschap = "Privé";
public function toonEigenschappen() {
echo $this->publiekeEigenschap;
echo $this->beschermdeEigenschap;
echo $this->priveEigenschap;
}
}
$voorbeeld = new Voorbeeld();
echo $voorbeeld->publiekeEigenschap; // Output: Publiek
// echo $voorbeeld->beschermdeEigenschap; // Fout: Ongeoorloofde toegang
// echo $voorbeeld->priveEigenschap; // Fout: Ongeoorloofde toegang
$voorbeeld->toonEigenschappen(); // Output: PubliekBeschermdPrivé
?>
Class Constanten
Class constanten zijn waarden die na hun definitie niet meer kunnen worden gewijzigd. Ze worden gebruikt om vaste waarden te definiëren die bij de klasse horen en niet bij een specifiek object. Class constanten worden gedefinieerd met het const
keyword.
<?php
class Cirkel {
const PI = 3.14159;
public function omtrek($straal) {
return 2 * self::PI * $straal;
}
}
echo Cirkel::PI; // Output: 3.14159
$cirkel = new Cirkel();
echo $cirkel->omtrek(10); // Output: 62.8318
?>
In dit voorbeeld definiëren we een constante PI
binnen de klasse Cirkel
. Deze constante kan worden benaderd met self::PI
binnen de klasse en met Cirkel::PI
buiten de klasse.
Static Properties
Static properties behoren tot de klasse zelf en niet tot een specifieke instantie van de klasse. Ze worden gedeeld door alle objecten van de klasse.
<?php
class Teller {
public static $aantal = 0;
public function __construct() {
self::$aantal++;
}
public static function getAantal() {
return self::$aantal;
}
}
$teller1 = new Teller();
$teller2 = new Teller();
echo Teller::getAantal(); // Output: 2
?>
In dit voorbeeld definiëren we een statische eigenschap $aantal
die het aantal gecreëerde objecten van de klasse Teller
bijhoudt. De waarde van deze eigenschap wordt gedeeld door alle objecten van de klasse.
Constructor Promotion
Constructor promotion is een functie in PHP 8 die het definiëren en initialiseren van properties vereenvoudigt in de constructor zelf. Dit vermindert boilerplate code en maakt de klasse leesbaarder.
<?php
class Point {
public function __construct(
private int $x = 0,
private int $y = 0
) {}
public function getX(): int {
return $this->x;
}
public function getY(): int {
return $this->y;
}
}
$point = new Point(10, 20);
echo $point->getX(); // Output: 10
echo $point->getY(); // Output: 20
?>
Class properties en constanten zijn fundamentele bouwstenen van objectgeoriënteerd programmeren in PHP. Ze helpen bij het definiëren van de staat en het gedrag van objecten en klassen. Door het gebruik van verschillende toegangsmodificatoren, constanten en statische eigenschappen, kun je je klassen flexibel en robuust maken.