Pas de liaison mais avec l’original
<?php
class A {
public function method() { }
}
class B extends A {
public function method() { }
}
class C {
public function method() { }
}
class D { }
$fn = Closure::fromCallable([new A, 'method']);
$fn->call(new B); // error
$fn->call(new C); // error
$fn->call(new D); // error
?>
Il est possible de changer l’objet sous-jacent d’une closure. La nouvelle closure sera exécutée avec le nouvel objet, en utilisant la même méthode.
En revanche, il n’est pas possible d’appeler cette closure sur une autre classe, même si cette classe possède la même méthode, ni même si la classe est une classe enfant de la classe originale. Il doit s’agir exactement de la même classe d’origine.
See Also
PHP Error Messages
PHP Features
Last updated: 11 October 2026