Re: Confusing performance of the magic method __call
| From: | Ferenc Kovacs | Date: | Tue, 03 Aug 2010 11:23:47 +0000 |
| Subject: | Re: Confusing performance of the magic method __call | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-49196@lists.php.net to get a copy of this message | ||
2010/8/3 Victor Bolshov <crocodile2u@gmail.com>:
> Shijiang, did you notice the
>
> --
> Warning: The magic method __call() must have public visibility and cannot be
> static in Command line code on line 1
> --
>
> ???
>
> 2010/8/3 Shijiang <shijiang@staff.sina.com.cn>
>
>> Hi,
>>
>> In the following sample code, I expected that the magic method __call only
>> works within the class Test.
>> But it seems that the access control keyword private lost its efficacy when
>> working together with the magic method __call.
>>
>> <?php
>> class Test{
>> private function __call($name,$params){
>> echo $name,"\n";
>> echo $params[0];
>> }
>>
>> public function bar(){
>> $this->kakaka('afaafaf');
>> }
>> }
>> $foo=new Test;
>> $foo->bar('sfsfss');
>> $foo->nothing('works'); // this also works without any errors.
>> ?>
>>
>> IMHO, since the function __call is a method of a class, it should obey the
>> visibility rules.
>>
>> Cheers.
>>
>
>
>
> --
> С уважением,
> Виктор
>
It was added/changed with 5.3 so it is not necessarly obvious.
Tyrael