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

No Binding But With 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

?>

It is possible to change the underlying object of a closure. The new closure will be executed with the new object, with the same method.

On the other hand, it is not possible to call that closure on another class, even if that class has the same method, nor even if the class is a child of the original one. It must be the same original class.

See Also

PHP Error Messages

PHP Features

Last updated: 10 September 2026