PHP 8.4 introduit les hooks de propriété

La nouvelle version de PHP introduit notamment les hooks de propriétés, la visibilité asymétrique pour les propriétés de classe et une nouvelle API DOM HTML5.

Avec les hooks de propriétés, il est possible de définir la logique get et set directement lors de la déclaration de la propriété (similaire à C#), au lieu d’utiliser des méthodes séparées getFoo()/setFoo() ou les méthodes magiques moins pratiques __get/__set. Cela améliore considérablement la flexibilité et la lisibilité du code.

Avant les hooks de propriétés, la logique get et set ressemblait à ceci :

				
					<?php

class Intxample
{ 
    private bool $negative = false;
    public int $value = 0;
    
    public function getValue(): int
    { 
        if ($this->negative) { 
            return $this->value * -1; 
        } 
        
        return $this->value; 
        
    }
    
    public function setValue(int $value)
    {
        $this->value = abs($value);
        $this->negative = $value < 0;
    }
}

$example = new Intxample();
$example->setValue(-5);
print $example->getValue(); // Output: -5
				
			

En comparaison, voici la nouvelle syntaxe :

				
					<?php

class Intxample
{
    private bool $negative = false;

    public int $value = 0 {
    
        get {
            if ($this->negative) {
                return $this->value * -1;
            }
            return $this->value;
        }
        
        set(int $value) {
            $this->value = abs($value);
            $this->negative = $value < 0;
        }
    }
}

$example = new Intxample();
$example->value = -5;
print $example->value; // Output: -5
				
			

Reste à voir si cela apporte réellement un si grand avantage pour les développeurs. À mon avis, cela rend le bloc de variables au début d’une classe bien moins lisible. C’est sans doute une question de goût.

À propos de l'auteur

Mentions de Cookies WordPress par Real Cookie Banner