On Wed, Aug 27, 2008 at 1:49 PM, Nathan Nobbe <[EMAIL PROTECTED]>wrote:

> On Wed, Aug 27, 2008 at 1:35 PM, Paulo Sousa <[EMAIL PROTECTED]>wrote:
>  ...
>

this *should* work,

here is a test, tests/classes/__call_005.phpt, you can take the part beneath
the --FILE-- section and see if it blows up on your system or not.
right now, im getting errors on a php5.2.5 system, and its working as
expected on a php5.2.6 system.

--TEST--
When __call() is invoked via ::, ensure private implementation of __call()
in superclass is accessed without error.
--FILE--
<?php
class A {
    private function __call($strMethod, $arrArgs) {
        echo "In " . __METHOD__ . "($strMethod, array(" .
implode(',',$arrArgs) . "))\n";
        var_dump($this);
    }
}

class B extends A {
    function test() {
        A::test1(1,'a');
        B::test2(1,'a');
        self::test3(1,'a');
        parent::test4(1,'a');
    }
}

$b = new B();
$b->test();
?>
--EXPECTF--
In A::__call(test1, array(1,a))
object(B)#1 (0) {
}
In A::__call(test2, array(1,a))
object(B)#1 (0) {
}
In A::__call(test3, array(1,a))
object(B)#1 (0) {
}
In A::__call(test4, array(1,a))
object(B)#1 (0) {
}

also, i found in the code you posted, you are missing a 'function' in front
of doWhatever (cause a parse error, which is why i mention it); w/ the
following modification to your code, its running fine on a php 5.2.6 system,
and choking on 5.2.5;

      function __call($function, $args){
                var_dump($function);
                var_dump($args);
                  $this->doWhatever();
                  }

                   private function doWhatever() {
                    }

[EMAIL PROTECTED] ~/unpack/php-5.2.6RC3/tests/classes $ php testOtherStuff.php
string(5) "drive"
array(1) {
  [0]=>
  string(7) "testing"
}

-nathan

(sorry for the long-winded post)

Reply via email to