2010/8/3 Shijiang <shiji...@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.
>



http://www.php.net/manual/en/migration53.incompatible.php

The magic methods __get, __set, __isset, __unset, and __call must
always be public and can no longer be static. Method signatures are
now enforced.

Tyrael

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to