Hello Jochem,

using 'protected' for __call() hides that mechanism from the outside world,
hence the behavior is correct. Just drop protected and it should work as you
expect.

marcus

Sunday, April 4, 2004, 9:49:44 PM, you wrote:

> the following code does not do what I expect, I made this test case 
> after a new version of PHP5 was put on the system I am developing 
> yesterday and some of my code no longer works:

> <?

> Class CallMe
> {
>      public function setup()
>      {
>          $this->fakeMethod();
>      }

>      protected function __call($method, $params)
>      {
>          echo 'you called CallMe::'.$method."\n";
>      }
> }

> echo <<< ___THEEND
> EXPECTED RESULT:
> -----------------------------------------
> you called CallMe::fakeMethod

> ACTUAL RESULT:
> -----------------------------------------

> ___THEEND;

> $obj = new CallMe();
> $obj->setup();

?>>

> running the script on 'PHP 5.0.0RC2-dev (cli) (built: Apr  4 2004 
> 13:07:13) (DEBUG)' gives me:

> <snip>
> EXPECTED RESULT:
> -----------------------------------------
> you called CallMe::fakeMethod

> ACTUAL RESULT:
> -----------------------------------------
> PHP Fatal error:  Call to protected method CallMe::__call() from context 
> '' in /var/www/santos/test/call.protected.php on line 7

> Fatal error: Call to protected method CallMe::__call() from context '' 
> in /var/www/santos/test/call.protected.php on line 7
> </snip>

> Have I misunderstood the way PHP5 works?
> Or maybe something is broken? does anyone else get an error?
> I don't rule out that this could be something specific to the machine I 
> am on, unfortunately I am limited by knowledge and access in determining 
>   if this is the case.

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

Reply via email to