diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2021-01-28 10:04:17 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2021-01-28 10:05:51 +0100 |
commit | 6971c720b05623f0d10fa7c44e8fc175e89e0fa3 (patch) | |
tree | 07311b9158c7c5fefbaee8644c58b15fff5903be | |
parent | 23961ef382e1005db6f8c08f3ecc0002839388a7 (diff) | |
parent | 17142eab22152df8ef3ee6f0d369b87eb87a3f5f (diff) | |
download | php-git-6971c720b05623f0d10fa7c44e8fc175e89e0fa3.tar.gz |
Merge branch 'PHP-8.0'
* PHP-8.0:
Observe fake closures
-rw-r--r-- | Zend/zend_observer.c | 2 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_closure_02.phpt | 32 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_error_05.phpt | 2 |
3 files changed, 34 insertions, 2 deletions
diff --git a/Zend/zend_observer.c b/Zend/zend_observer.c index a60428ee04..2bb7f9afa2 100644 --- a/Zend/zend_observer.c +++ b/Zend/zend_observer.c @@ -29,7 +29,7 @@ #define ZEND_OBSERVER_NOT_OBSERVED ((void *) 2) #define ZEND_OBSERVABLE_FN(fn_flags) \ - (!(fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE | ZEND_ACC_FAKE_CLOSURE))) + (!(fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) typedef struct _zend_observer_fcall_data { // points after the last handler diff --git a/ext/zend_test/tests/observer_closure_02.phpt b/ext/zend_test/tests/observer_closure_02.phpt new file mode 100644 index 0000000000..d2fbba5296 --- /dev/null +++ b/ext/zend_test/tests/observer_closure_02.phpt @@ -0,0 +1,32 @@ +--TEST-- +Observer: Observability of fake closures +--SKIPIF-- +<?php if (!extension_loaded('zend_test')) die('skip: zend_test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +--FILE-- +<?php +class Foo +{ + public function bar() + { + echo 'Called as fake closure.' . PHP_EOL; + } +} + +$callable = [new Foo(), 'bar']; +$closure = \Closure::fromCallable($callable); +$closure(); + +echo 'DONE' . PHP_EOL; +?> +--EXPECTF-- +<!-- init '%s%eobserver_closure_%d.php' --> +<file '%s%eobserver_closure_%d.php'> + <!-- init Foo::bar() --> + <Foo::bar> +Called as fake closure. + </Foo::bar> +DONE +</file '%s%eobserver_closure_%d.php'> diff --git a/ext/zend_test/tests/observer_error_05.phpt b/ext/zend_test/tests/observer_error_05.phpt index d3e5f67a4e..0a00d16ce7 100644 --- a/ext/zend_test/tests/observer_error_05.phpt +++ b/ext/zend_test/tests/observer_error_05.phpt @@ -1,7 +1,7 @@ --TEST-- Observer: End handlers fire after a userland fatal error --SKIPIF-- -<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +<?php if (!extension_loaded('zend_test')) die('skip: zend_test extension required'); ?> --INI-- zend_test.observer.enabled=1 zend_test.observer.observe_all=1 |