Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Autres types pour une propriété

<?php

class X {
    
    public string $p {
        set(string|A|null $value)  {
            $this->p = (string) $value;
        }
        
        get => $this-p . ' more';
    }
}

class A {
    function __toString() {
        return 'abc';
    }
}

$x = new X;
$x->p = new A;

Il est possible de faire accepter à une propriété typée plus que son type de définition.

Grâce aux propriétés à hooks, le type de la valeur entrante peut être différent du type final : en effet, le hook de la propriété doit convertir cette valeur vers le type réel.

Une contrainte est que le type supporté doit être plus large que le type sous-jacent de la propriété. Cela s’obtient facilement en utilisant un type union composé du type de la propriété et de tous les autres types nécessaires.

En revanche, le hook get ne peut retourner que son type exact : pas de covariance, pas de contravariance.

See Also

PHP Features

Last updated: 11 October 2026