1--TEST-- 2When __call() is invoked via ::, ensure current scope's __call() is favoured over the specified class's __call(). 3--FILE-- 4<?php 5class A { 6 function __call($strMethod, $arrArgs) { 7 echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n"; 8 var_dump($this); 9 } 10} 11 12class B extends A { 13 function __call($strMethod, $arrArgs) { 14 echo "In " . __METHOD__ . "($strMethod, array(" . implode(',',$arrArgs) . "))\n"; 15 var_dump($this); 16 } 17 18 function test() { 19 A::test1(1,'a'); 20 B::test2(1,'a'); 21 self::test3(1,'a'); 22 parent::test4(1,'a'); 23 } 24} 25 26$b = new B(); 27$b->test(); 28?> 29--EXPECT-- 30In B::__call(test1, array(1,a)) 31object(B)#1 (0) { 32} 33In B::__call(test2, array(1,a)) 34object(B)#1 (0) { 35} 36In B::__call(test3, array(1,a)) 37object(B)#1 (0) { 38} 39In B::__call(test4, array(1,a)) 40object(B)#1 (0) { 41} 42