note 105936 deleted from language.oop5.magic by cmb

From: Date: Sun, 10 Nov 2019 12:37:26 +0000
Subject: note 105936 deleted from language.oop5.magic by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-212983@lists.php.net to get a copy of this message
Note Submitter: hyponiq at gmail dot com ---- 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

« previous php.notes (#212983) next »