PHP 8.4 bringt Property Hooks

Die neue PHP-Version führt u.a. Property Hooks, asymmetrische Sichtbarkeit für Klasseneigenschaften und eine neue HTML5-DOM-API ein.

Mit Property Hooks lassen sich get– und set-Logik direkt an der Property-Deklaration definieren (ähnlich wie bei C#), statt wie bisher über separate getFoo()/setFoo()-Methoden oder die eher unhandlichen Magic Methods __get/__set. Dies verbessert die Flexibilität und Lesbarkeit des Codes erheblich.

Vor den Property Hooks sah die get- und set-Logik so aus:

				
					<?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
				
			

Im Vergleich dazu die neue Syntax:

				
					<?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
				
			

Ob dies wirklich einen so großen Vorteil für Entwickler bringt, sei mal dahingestellt. Aus meiner Sicht macht es den Variablenblock am Anfang einer Klasse viel unübersichtlicher. Ist wohl Geschmackssache.

WordPress Cookie Hinweis von Real Cookie Banner