o exemplo que tu passou é algo que existe desde de o PHP 5. property hooks é outra coisa, algo como C# torna mais eficiente algo que já era possivel literalmente 20 anos.

PHP 5.0 (2004)

class Foo
{
    private $data = [];

    public function __set($name, $value)
    {
        if ($name === 'bar') {
            $this->data[$name] = strtolower($value);
        }
    }

    public function __get($name)
    {
        if ($name === 'bar') {
            return strtoupper($this->data[$name]);
        }
    }
}

PHP 8.4 (2024)

class Foo
{
    public string $bar {
        get => strtoupper($this->username);
        set => strtoupper($value);
    }
}

Vc é muito bom!