PHP 8.4 traz Property Hooks

A nova versão do PHP introduz, entre outras coisas, Property Hooks, visibilidade assimétrica para propriedades de classes e uma nova API DOM HTML5.

Com Property Hooks, é possível definir lógica de get e set diretamente na declaração da propriedade (semelhante ao C#), em vez de métodos separados getFoo()/setFoo() ou os métodos mágicos menos práticos __get/__set. Isso melhora significativamente a flexibilidade e a legibilidade do código.

Antes dos Property Hooks, a lógica de get e set era assim:

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

Em comparação, a nova sintaxe:

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

Se isso realmente traz uma grande vantagem para os desenvolvedores, é questionável. Do meu ponto de vista, deixa o bloco de variáveis no início de uma classe muito mais confuso. Acho que é uma questão de gosto.

Aviso de cookies do WordPress by Real Cookie Banner