PHP Tutorial.nl

Word een PHP expert!!!

Home » Classes » Late Static Binding

Late Static Binding in PHP: Wat is het precies?

Late Static Binding (LSB) is een geavanceerd concept in PHP dat zorgt voor meer flexibiliteit en uitbreidbaarheid in objectgeoriënteerde programmeertechnieken. Met late static binding kun je methoden in een basisklasse definiëren en er zeker van zijn dat ze de juiste context gebruiken wanneer ze in afgeleide klassen worden aangeroepen. Dit is vooral nuttig in complexe hiërarchieën.

Wat is Late Static Binding in PHP?

Late Static Binding (LSB) in PHP is een manier om ervoor te zorgen dat een methode in een klasse altijd de juiste context gebruikt, zelfs wanneer deze methode in een andere klasse wordt aangeroepen. Dit wordt vaak gebruikt in objectgeoriënteerde programma’s waar methoden in een basisklasse worden overschreven in een afgeleide klasse.

Uitleg en Voorbeeld

In PHP worden methoden normaal gesproken gebonden aan de klasse waarin ze zijn gedefinieerd. Met LSB kunnen we ervoor zorgen dat methoden gebonden worden aan de klasse die ze aanroept, zelfs als ze in een ouderklasse zijn gedefinieerd. Dit is nuttig voor het creëren van flexibele en uitbreidbare objectgeoriënteerde code.

<?php
class Basis {
    public static function maakObject() {
        return new self();
    }
    
    public function identificeer() {
        echo "Ik ben een instantie van Basis klasse.";
    }
}

class Afgeleide extends Basis {
    public function identificeer() {
        echo "Ik ben een instantie van Afgeleide klasse.";
    }
}

$object = Afgeleide::maakObject();
$object->identificeer(); // Output: Ik ben een instantie van Basis klasse.
?>

In het bovenstaande voorbeeld zal de methode maakObject altijd een instantie van de Basis klasse retourneren, zelfs als deze vanuit de Afgeleide klasse wordt aangeroepen.

Met Late Static Binding kunnen we dit gedrag wijzigen zodat maakObject de juiste klasse retourneert.

<?php
class Basis {
    public static function maakObject() {
        return new static();
    }
    
    public function identificeer() {
        echo "Ik ben een instantie van Basis klasse.";
    }
}

class Afgeleide extends Basis {
    public function identificeer() {
        echo "Ik ben een instantie van Afgeleide klasse.";
    }
}

$object = Afgeleide::maakObject();
$object->identificeer(); // Output: Ik ben een instantie van Afgeleide klasse.
?>

In dit geval gebruiken we static in plaats van self in de maakObject methode. Hierdoor wordt de methode gebonden aan de klasse die het aanroept (Afgeleide), en retourneert het een instantie van Afgeleide.

Praktisch Gebruik

Late Static Binding is bijzonder nuttig in scenarios waar je flexibel wilt zijn met methoden en eigenschappen in een hiërarchie van klassen. Het stelt ontwikkelaars in staat om basisfunctionaliteit in een ouderklasse te definiëren en deze aan te passen in afgeleide klassen zonder de structuur van de basisfunctionaliteit te breken.

<?php
abstract class Dier {
    protected static $geluid = "onbekend geluid";
    
    public static function maak() {
        return new static();
    }
    
    public function maakGeluid() {
        echo static::$geluid;
    }
}

class Hond extends Dier {
    protected static $geluid = "Woof";
}

class Kat extends Dier {
    protected static $geluid = "Meow";
}

$hond = Hond::maak();
$hond->maakGeluid(); // Output: Woof

$kat = Kat::maak();
$kat->maakGeluid(); // Output: Meow
?>

In dit voorbeeld gebruiken we Late Static Binding om verschillende geluiden voor verschillende dieren te maken, terwijl we dezelfde basisfunctionaliteit in de Dier klasse behouden.


Late Static Binding is een krachtige techniek in PHP voor het creëren van flexibele en uitbreidbare objectgeoriënteerde code. Het stelt methoden in staat om dynamisch te binden aan de klasse die ze aanroept, wat vooral nuttig is in complexe hiërarchieën van klassen. Door gebruik te maken van LSB, kunnen ontwikkelaars meer robuuste en onderhoudbare applicaties bouwen.