note 105936 added to language.oop5.magic

From: Date: Tue, 27 Sep 2011 01:07:56 +0000
Subject: note 105936 added to language.oop5.magic
Groups: php.notes 
Request: Send a blank email to php-notes+get-183460@lists.php.net to get a copy of this message
I think it's fair to note the undocumented fact that the __invoke magic method can take any number of arguments (or none). Example: <?php class InvokeNoParams {     function __invoke()     {         print __METHOD__ . PHP_EOL;         $i = 1;         foreach (func_get_args() as $arg) {             print "The value of \$param{$i} is: " . $arg . PHP_EOL;             ++$i;         } print PHP_EOL;     } }   class InvokeSingleParam {     function __invoke($param1)     {         print __METHOD__ . PHP_EOL;         print "Value of \$param1 is: " . $param1 . PHP_EOL . PHP_EOL;     } }   class InvokeMultiParams {     function __invoke($param1, $param2, $param3) {         print __METHOD__ . PHP_EOL;         print "Value of \$param1 is: " . $param1 . PHP_EOL;         print "Value of \$param2 is: " . $param2 . PHP_EOL;         print "Value of \$param3 is: " . $param3 . PHP_EOL . PHP_EOL;     } }   $no = new InvokeNoParams; $single = new InvokeSingleParam; $multi = new InvokeMultiParams;   $no(1, 2, 3); $single('one param'); $multi('param 1', 'param 2', 'param 3'); ?> This outputs: InvokeNoParams::__invoke The value of $param1 is: 1 The value of $param2 is: 2 The value of $param3 is: 3 InvokeSingleParam::__invoke Value of $param1 is: one param InvokeMultiParams::__invoke Value of $param1 is: param 1 Value of $param2 is: param 2 Value of $param3 is: param 3 ---- Server IP: 69.147.83.197 Probable Submitter: 69.73.113.128 ---- Manual Page -- http://www.php.net/manual/en/language.oop5.magic.php Edit -- https://master.php.net/note/edit/105936 Del: integrated -- https://master.php.net/note/delete/105936/integrated Del: useless -- https://master.php.net/note/delete/105936/useless Del: bad code -- https://master.php.net/note/delete/105936/bad+code Del: spam -- https://master.php.net/note/delete/105936/spam Del: non-english -- https://master.php.net/note/delete/105936/non-english Del: in docs -- https://master.php.net/note/delete/105936/in+docs Del: other reasons-- https://master.php.net/note/delete/105936 Reject -- https://master.php.net/note/reject/105936 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#183460) next »