|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-11-28 09:42 UTC] dmitry@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 11:00:01 2025 UTC |
Description: ------------ When using a custom class as a callback object, the array_map (and possibly other methods) call the method outside of the object's context. I was using this as the __invoke() method to test: if (!isset($this)) { die('Outside of object context.'); } else { return $this->val; } This may be the best way to setup the PHP unit test script. Again I did not test this on other callback functions, but it very easily could be happening on those as well. Reproduce code: --------------- <?php class Callback { protected $val = 'hello, world'; public function __invoke() { return $this->val; } } $cb = new Callback(); // straight callback if ($cb() != 'hello, world') { die('error'); } // array_map $a = array(1, 2, 3); $b = array_map($cb, $a); print_r($b); ?> Expected result: ---------------- Array ( [0] => hello, world [1] => hello, world [2] => hello, world ) Actual result: -------------- PHP Fatal error: Using $this when not in object context in /srv/www/test/closure.php on line 8