Closure::fromCallable(): Use fake closures

This commit is contained in:
Nikita Popov 2016-07-05 15:13:36 +02:00
parent 03fbc27f07
commit e395b62c51
2 changed files with 22 additions and 2 deletions

View file

@ -0,0 +1,20 @@
--TEST--
Testing Closure::fromCallable() functionality: Rebinding
--FILE--
<?php
class A {
public function method() {
var_dump($this);
}
}
class B {
}
$fn = Closure::fromCallable([new A, 'method']);
$fn->call(new B);
?>
--EXPECTF--
Warning: Cannot bind method A::method() to object of class B in %s on line %d

View file

@ -295,9 +295,9 @@ static int zend_create_closure_from_callable(zval *return_value, zval *callable,
if (fcc.object) {
ZVAL_OBJ(&instance, fcc.object);
zend_create_closure(return_value, mptr, mptr->common.scope, fcc.object->ce, &instance);
zend_create_fake_closure(return_value, mptr, mptr->common.scope, fcc.object->ce, &instance);
} else {
zend_create_closure(return_value, mptr, mptr->common.scope, NULL, NULL);
zend_create_fake_closure(return_value, mptr, mptr->common.scope, NULL, NULL);
}
return SUCCESS;