note 105936 added to language.oop5.magic
| From: | hyponiq at gmail dot com | 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