PHP5.2.9以降で、__callメソッドの挙動に変更がありました。
下記はPHP5.2.XとPHP5.3.Xについての記述ですが、この点についてはPHP5.2.8とPHP5.2.9についても同様の変更が加えられたということですね。
PHP5.2.XからPHP5.3.Xへの以降→下位互換性のない変更点
マジックメソッド __call は、private や protected のメソッドに対するアクセスでも呼び出されるようになりました。
ChangeLogでは下記が該当箇所ですね。
Version 5.2.9
26-February-2009
* Changed __call() to be invoked on private/protected method access, similar to properties and __get(). (Andrei)
<?php class TestClass { public function __call($name, $arguments) { if ($name == 'privateMethod') { $this->privateMethod(); } } private function privateMethod() { echo "called private method!\n"; } } $test_class = new TestClass(); $test_class->privateMethod();
PHP Fatal error: Call to private method TestClass::privateMethod() from context in a.php on line 19
called private method!