Sobes.tech
Junior

Wat is het doel van het sleutelwoord final in PHP?

sobes.tech AI

Antwoord van AI

Het sleutelwoord final wordt gebruikt om het overschrijven van klassen, methoden en constanten te voorkomen.

Toepassingen:

  • Klassen: Als een klasse als final is gedeclareerd, kan deze niet worden uitgebreid.

    <?php
    final class Base {
        // ...
    }
    
    // Fatale fout: De klasse Derived kan niet erven van de finale klasse Base
    // class Derived extends Base {
    //     // ...
    // }
    
  • Methoden: Als een klasse-methode als final is gedeclareerd, kan deze niet worden overschreven in een afgeleide klasse.

    <?php
    class Base {
        final public function process() {
            // ...
        }
    }
    
    class Derived extends Base {
        // Fatale fout: Kan de finale methode Base::process() niet overschrijven
        // public function process() {
        //     // ...
        // }
    }
    
  • Constanten: Vanaf PHP 8.1 kunnen klasseconstanten ook als final worden gedeclareerd. Dit voorkomt dat ze worden overschreven in afgeleide klassen.

    <?php
    class Base {
        final public const VERSION = '1.0';
    }
    
    class Derived extends Base {
        // Fatale fout: Kan de finale constante Base::VERSION niet overschrijven
        // public const VERSION = '1.1';
    }
    

Doel van final:

  • Veiligheid: Zorgt ervoor dat de kernlogica of het beoogde gedrag van de klasse/methode niet wordt gewijzigd in subklassen.
  • API-stabiliteit: Garandeert dat de specifieke implementatie van een methode of klasse niet wordt gewijzigd, wat vooral belangrijk is bij het ontwikkelen van bibliotheken.
  • Prestaties (licht): In sommige gevallen kan het de compiler-optimizer toestaan om agressievere inline-optimisaties uit te voeren, omdat bekend is dat de methode niet wordt overschreven.