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

Fonction fléchée statique

<?php

class x {
    private $p = 5;

    function foo() {
        $b = 2;
        $f = fn($a) => $a + $b + $this->p;
        echo $f(1);         // 8 = 1 + 2 + 5 

        $t = $this;
        $f = static fn($a) => $a + $b + $t->p;
        echo $f(1);         // 8 = 1 + 2 + 5 

        $f = static fn($a) => $a + $b + $this->p;
        // Only an error if the code is executed
        //echo $f(1);        
    }
}

new x()->foo();

Il est possible d’ajouter l’option static à une fonction fléchée. Dans ce cas, PHP n’autorise pas l’utilisation du contexte de l’objet courant via $this.

En revanche, il reste possible d’accéder à toutes les variables locales du contexte, et, si jamais $this a été assigné à une variable locale, elle peut être importée dans le contexte de la fonction fléchée.

À noter également que PHP accepte la présence de $this dans une fonction fléchée statique, tant qu’elle n’est pas exécutée ! Puisqu’il n’y a aucun moyen de modifier le statut statique de la fonction fléchée, il s’agit d’une fonction zombie : elle peut être transmise, mais pas exécutée.

See Also

PHP Error Messages

PHP Features

Last updated: 11 October 2026