PHP 8.4 introduce Property Hooks

La nueva versión de PHP introduce, entre otras cosas, Property Hooks, visibilidad asimétrica para las propiedades de clase y una nueva API HTML5 DOM.

Con los Property Hooks, se puede definir la lógica de get y set directamente en la declaración de la propiedad (similar a C#), en lugar de utilizar métodos separados getFoo()/setFoo() o los incómodos métodos mágicos __get/__set. Esto mejora considerablemente la flexibilidad y la legibilidad del código.

Antes de los Property Hooks, la lógica de get y set se veía así:

				
					<?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 comparación, la nueva sintaxis:

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

Si esto realmente supone una gran ventaja para los desarrolladores, es debatible. Desde mi punto de vista, hace que el bloque de variables al principio de una clase sea mucho menos claro. Supongo que es cuestión de gustos.

Sobre el autor

Aviso sobre Cookies en WordPress por Real Cookie Banner