Methodes in PHP classes zijn functies die zijn gedefinieerd binnen een klasse en die opereren op objecten van die klasse. Ze helpen bij het definiëren van het gedrag van objecten en kunnen toegang krijgen tot de eigenschappen van die objecten. Laten we dieper ingaan op hoe je methodes definieert, gebruikt en welke soorten methodes er zijn.
Definitie en gebruik
Een methode wordt gedefinieerd binnen een klasse met behulp van het public
, protected
of private
keyword, gevolgd door de functienaam en het functielichaam ({}
).
<?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.
?>
Getters en Setters
Getters en setters zijn methodes die worden gebruikt om de eigenschappen van een object te lezen en te wijzigen. Ze helpen bij het controleren van de toegang tot de eigenschappen van een object.
<?php
class Persoon {
private $leeftijd;
public function setLeeftijd($leeftijd) {
if ($leeftijd > 0) {
$this->leeftijd = $leeftijd;
}
}
public function getLeeftijd() {
return $this->leeftijd;
}
}
$persoon = new Persoon();
$persoon->setLeeftijd(30);
echo $persoon->getLeeftijd(); // Output: 30
?>
Toegangsmodificatoren
Methodes kunnen verschillende toegangsmodificatoren hebben:
- 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 function publiekeMethode() {
echo "Publiek";
}
protected function beschermdeMethode() {
echo "Beschermd";
}
private function priveMethode() {
echo "Privé";
}
}
?>
Statische methodes
Statische methodes behoren tot de klasse zelf en niet tot een specifieke instantie van de klasse. Ze kunnen worden aangeroepen zonder een object van de klasse te creëren.
<?php
class Hulpmiddelen {
public static function zegHallo() {
echo "Hallo!";
}
}
Hulpmiddelen::zegHallo(); // Output: Hallo!
?>
Abstracte methodes
Abstracte methodes worden gedeclareerd in abstracte klassen en moeten worden geïmplementeerd door afgeleide klassen.
<?php
abstract class Dier {
abstract public function maakGeluid();
}
class Hond extends Dier {
public function maakGeluid() {
echo "Woef!";
}
}
$hond = new Hond();
$hond->maakGeluid(); // Output: Woef!
?>
Return Types
Sinds PHP 7.0 kunnen methodes een return type declareren. Dit specificeert het type van de waarde die de methode teruggeeft.
<?php
class Rekenmachine {
public function vermenigvuldig(int $a, int $b): int {
return $a * $b;
}
}
$rekenmachine = new Rekenmachine();
echo $rekenmachine->vermenigvuldig(2, 3); // Output: 6
?>
Het final
Keyword
Het final
keyword wordt gebruikt om te voorkomen dat een methode in een afgeleide klasse wordt overschreven of om een klasse onovererfbaar te maken.
<?php
class Basis {
final public function zegHallo() {
echo "Hallo!";
}
}
class Afgeleid extends Basis {
// public function zegHallo() { // Dit zal een fout veroorzaken
// echo "Hallo, wereld!";
// }
}
?>
Statische variabelen in methodes
Statische variabelen behouden hun waarde tussen opeenvolgende aanroepen van de methode waarin ze zijn gedefinieerd. Ze zijn handig voor het bijhouden van statusinformatie binnen een methode.
<?php
class Voorbeeld {
public function tellen() {
static $aantal = 0;
$aantal++;
echo $aantal;
}
}
$voorwerp = new Voorbeeld();
$voorwerp->tellen(); // Output: 1
$voorwerp->tellen(); // Output: 2
$voorwerp->tellen(); // Output: 3
?>
Methodes als callbacks
Methodes kunnen ook prima als callbacks worden gebruikt in PHP, wat je code flexibel en modulair maakt. Zowel reguliere functies als methodes binnen classes kunnen als callbacks dienen.
In dit voorbeeld wordt de log
methode van het Logger
object gebruikt als callback voor array_walk
, waarmee elk bericht wordt gelogd.
<?php
class Logger {
public function log($bericht) {
echo "Log: $bericht\n";
}
}
$berichten = ["Bericht 1", "Bericht 2", "Bericht 3"];
$logger = new Logger();
array_walk($berichten, [$logger, 'log']);
?>
Methodes zijn een fundamenteel onderdeel van objectgeoriënteerd programmeren in PHP. Ze definiëren het gedrag van objecten en maken het mogelijk om toegang te krijgen tot en te werken met de eigenschappen van een object. Door gebruik te maken van verschillende types methodes en toegangsmodificatoren kun je robuuste en flexibele klassen ontwerpen.