PATH:
opt
/
alt
/
tests
/
alt-php72-pecl-pthreads-zts_3.2.0-1.el8
/
tests
--TEST-- Testing closure members --DESCRIPTION-- This test verifies that closures can be set as members and called from anywhere --FILE-- <?php $test = new Threaded(); $test->some = function(){ echo "Hello Some\n"; }; class T extends Thread { public function __construct($test) { $this->test = $test; } public function run() { /* call original closure */ $this->call($this->test->some); /* set new closure */ $this->synchronized(function(){ $this->set = true; $this->test->some = function() { echo "Hello World\n"; }; $this->notify(); }); /* wait for new closure execution */ $this->synchronized(function(){ while (!$this->used) $this->wait(); }); } public function call(Closure $closure) { $closure(); } } /* start thread to call closure */ $t = new T($test); $t->start(); /* wait for new closure */ $t->synchronized(function() use($t) { while (!$t->set) $t->wait(); }); /* call new closure */ $some = $test->some; $some(); /* allow new closure to be dtored with old context */ $t->synchronized(function() use($t) { $t->used = true; $t->notify(); }); $t->join(); unset($t); --EXPECTF-- Hello Some Hello World
[+]
..
[-] magic-methods-isset-unset.phpt
[edit]
[-] traits-scope.inc
[edit]
[-] interface.phpt
[edit]
[-] oomethods.phpt
[edit]
[-] class-static-properties-order-dependencies.phpt
[edit]
[-] interfaces.phpt
[edit]
[-] lexical-vars.phpt
[edit]
[-] thorn-in-side.phpt
[edit]
[-] workers-no-collect.phpt
[edit]
[-] class-static-properties-2.phpt
[edit]
[-] workers-constant-copy.phpt
[edit]
[-] socket-getsockname-af-inet.phpt
[edit]
[-] resource-keeping.phpt
[edit]
[-] normalize-members.phpt
[edit]
[-] workers-no-join.phpt
[edit]
[-] socket-connect-error-unix.phpt
[edit]
[-] complex-statics-set-null.phpt
[edit]
[-] included-files.phpt
[edit]
[-] magic-methods-get-set.phpt
[edit]
[-] pthreads-inherit-none-class-constant.phpt
[edit]
[-] pools-default.phpt
[edit]
[-] immutable-threaded-members.phpt
[edit]
[-] closure-secondary-thread-copy.phpt
[edit]
[-] unset-defaults.phpt
[edit]
[-] nested-non-threaded-object-references.phpt
[edit]
[-] iterator-no-refs.phpt
[edit]
[-] socket-setoption.phpt
[edit]
[-] shutdown-handler.phpt
[edit]
[-] wait.phpt
[edit]
[-] socket-getsockname-af-unix.phpt
[edit]
[-] corrupted-resources.phpt
[edit]
[-] constant-ast-copy-missing-type.phpt
[edit]
[-] hacking-serials.phpt
[edit]
[-] null-member-crash.phpt
[edit]
[-] runtime-inheritance.phpt
[edit]
[-] socket-sentto-recvfrom-ipv6-udp.phpt
[edit]
[-] trait-aliases-reflection.phpt
[edit]
[-] ipv6_skipif.inc
[edit]
[-] trait-alias-bug.phpt
[edit]
[-] statics.phpt
[edit]
[-] workers-no-shutdown-before-start.phpt
[edit]
[-] synchronization.phpt
[edit]
[-] anon-unbound-double-inherited.phpt
[edit]
[-] static-scope-vars.phpt
[edit]
[-] selective-inheritance.phpt
[edit]
[-] constants.phpt
[edit]
[-] chunk.phpt
[edit]
[-] workers-no-start.phpt
[edit]
[-] closures-as-members-repeated-reallocation.phpt
[edit]
[-] new-class-after-thread-creation.phpt
[edit]
[-] socket-ipv6loop.phpt
[edit]
[-] includeme.inc
[edit]
[-] norefs.phpt
[edit]
[-] object-comparison.phpt
[edit]
[-] unprepared-entry-static-segfault.phpt
[edit]
[-] constant-array.phpt
[edit]
[-] socket-connect-error-win32.phpt
[edit]
[-] socket-select-unix.phpt
[edit]
[-] verify-overload.phpt
[edit]
[-] object-cast.phpt
[edit]
[-] foreign-private-members.phpt
[edit]
[-] statics-thorn-in-other-side.phpt
[edit]
[-] socket-ipv4loop.phpt
[edit]
[-] class-static-properties.phpt
[edit]
[-] closure-delayed-include.phpt
[edit]
[-] workers-ok-unstack.phpt
[edit]
[-] include_interface_constant.phpt
[edit]
[-] counting-members.phpt
[edit]
[-] inherit-non-closures.phpt
[edit]
[-] inherited-anon-class.phpt
[edit]
[-] waiting-timeouts.phpt
[edit]
[-] gone.phpt
[edit]
[-] static-resolution.phpt
[edit]
[-] anon-unbound-use-guards.phpt
[edit]
[-] unstack-running.phpt
[edit]
[-] crazy-refcounting-stuff.phpt
[edit]
[-] complex-statics.phpt
[edit]
[-] graceful-fatalities.phpt
[edit]
[-] socket-connect-params-af-inet.phpt
[edit]
[-] private-class-constant-fetching.phpt
[edit]
[-] display-startup-errors-output.phpt
[edit]
[-] global-constants.phpt
[edit]
[-] return-types.phpt
[edit]
[-] constant-ast-copy.phpt
[edit]
[-] functions.phpt
[edit]
[-] socket-unixloop.phpt
[edit]
[-] closures-as-members.phpt
[edit]
[-] staticmethods.phpt
[edit]
[-] exception-handler-options.phpt
[edit]
[-] inherited-anon-class-outside-context.phpt
[edit]
[-] legacy-ctor.phpt
[edit]
[-] volatile-arrays.phpt
[edit]
[-] recv-overload.phpt
[edit]
[-] socket-bind.phpt
[edit]
[-] socket-construct.phpt
[edit]
[-] trait-aliases.phpt
[edit]
[-] stateful-fatalities.phpt
[edit]
[-] socket-getpeername-af-unix.phpt
[edit]
[-] socket-read-type.phpt
[edit]
[-] volatile-nested.phpt
[edit]
[-] workers-default-collector.phpt
[edit]
[-] no-cloning.phpt
[edit]
[-] exception-handler-caught-nested.phpt
[edit]
[+]
assets
[-] socket-connect-params-af-unix.phpt
[edit]
[-] isset-unset.phpt
[edit]
[-] class-defaults.phpt
[edit]
[-] exception-handler-fail.phpt
[edit]
[-] doc-comments.phpt
[edit]
[-] explicit-cast-arrays.phpt
[edit]
[-] static-inheritance-unexpected-null.phpt
[edit]
[-] run-time-cache-corruption.phpt
[edit]
[-] anon-unbound-inherited.phpt
[edit]
[-] thread.phpt
[edit]
[-] traits-scope.phpt
[edit]
[-] child-to-parent-class-copying-helper.php
[edit]
[-] socket-select-win32.phpt
[edit]
[-] threaded_valid_tsrmls.phpt
[edit]
[-] class-static-properties-order-dependencies-inheritance.phpt
[edit]
[-] merge-non-threaded.phpt
[edit]
[-] exception-handler.phpt
[edit]
[-] isset-empty-compat.phpt
[edit]
[-] ini.phpt
[edit]
[-] anon-interceptors.phpt
[edit]
[-] binding.phpt
[edit]
[-] workers-no-unstack.phpt
[edit]
[-] exception-handler-caught-uncaught.phpt
[edit]
[-] socket-getpeername-af-inet.phpt
[edit]
[-] normal-reads.phpt
[edit]
[-] socket-sentto-recvfrom-ipv4-udp.phpt
[edit]
[-] child-to-parent-class-copying.phpt
[edit]
[-] threaded-extend-abstract.phpt
[edit]
[-] socket-getoption.phpt
[edit]
[-] workers-no-stack.phpt
[edit]
[-] shift-pop.phpt
[edit]
[-] pools.phpt
[edit]
[-] callstatic-etc.phpt
[edit]
[-] socket-sentto-recvfrom-unix.phpt
[edit]
[-] no-inheritance-anon-class.phpt
[edit]
[-] class-static-properties-double-inheritance.phpt
[edit]
[-] iterator-funcs.phpt
[edit]
[-] volatile-objects.phpt
[edit]
[-] merging-range.phpt
[edit]
[-] merging-members.phpt
[edit]
[-] runtime-inheritance-volatile.phpt
[edit]
[-] pthreads-inherit-none-class-constant-inherited.phpt
[edit]
[-] anon-bound-inherited.phpt
[edit]