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

Méthode __invoke() et propriétés

<?php

class x {
    private X $y;
    
    function __invoke() { echo __METHOD__;}
    
    function foo() {
        $this->y = new X;
        $this->y();
        // better this way
        ($this->y)();
    }
}

(new X)->foo();

Dans le code présenté, __invoke() rend la classe X invocable : l’objet peut être utilisé comme nom de fonction et appellera la méthode magique __invoke.

Ensuite, dans la même classe, il y a une propriété $y, dont le type est X. Cette propriété contient donc un objet invocable. Serait-il alors possible d’appeler cette propriété comme une méthode, et de l’invoquer ?

Eh bien, non. Cet appel produira une erreur : undefined method y. PHP n’utilise pas __invoke() ici, car cela entrerait en conflit avec une méthode y existante. De plus, cela créerait une méthode sensible à la casse, car la propriété $Y n’existe pas.

Pour invoquer l’objet contenu dans la propriété y, il faut mettre des parenthèses autour de l’objet, afin que PHP puisse l’extraire et l’invoquer en toute sécurité.

See Also

PHP Features

Last updated: 11 October 2026