ID: 31817 Updated by: [EMAIL PROTECTED] Reported By: tschlottke at virtualminds dot de -Status: Open +Status: Bogus Bug Type: SOAP related Operating System: debian unstable PHP Version: 5.0.3 Assigned To: dmitry New Comment:
You are wrong. Try the following script: <?php class test { function __call($func,$args) { return 'this is __call()'; } function test(){ return 'this is test()'; } } $x = new test; echo $x->test(); ?> Previous Comments: ------------------------------------------------------------------------ [2005-02-04 15:45:09] tschlottke at virtualminds dot de or am I wrong and you ment that I should call another function but not test()? this isn't working in my php 5.0.3 installation and that's why i submitted the bug ;) ------------------------------------------------------------------------ [2005-02-04 15:42:41] tschlottke at virtualminds dot de Yes, that's not what I ment. Sure, __call is being called if I call another method from within test() but __call should also be called if a not existing method is being called via soap, IMHO, you know what I mean? This is very useful if you want to wrap all soap calls and check the parameters, for example, so you can create completly virtual soap methods. In my case I use this to check if the session is valid. The user always has to send the session-id as the first parameter for each function and __call checks if everything is correct and calls all the target-method via call_user_function_array() or something. ------------------------------------------------------------------------ [2005-02-04 15:29:27] [EMAIL PROTECTED] It works as expected. If you will call somthing different from "test" you will go into __call(). ------------------------------------------------------------------------ [2005-02-02 16:40:44] tschlottke at virtualminds dot de Description: ------------ PHP 5's magic __call() method is being ignored in classes exported via soap. It's being ignored completly, afais. IMHO it should be called. Reproduce code: --------------- <?php class test { function __call($func,$args) { return 'this is __call()'; } function test(){ return 'this is test()'; } } $server = new SoapServer(null, array('uri' => "namespace")); $server->setClass('test'); $server->handle(); ?> --- <?php $client=new SoapClient(...); echo $client->test(); ?> Expected result: ---------------- "this is __call" Actual result: -------------- "this is test()" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=31817&edit=1