note 51340 added to function.xmlrpc-server-register-method

From: Date: Mon, 28 Mar 2005 11:08:50 +0000
Subject: note 51340 added to function.xmlrpc-server-register-method
Groups: php.notes 
Request: Send a blank email to php-notes+get-87078@lists.php.net to get a copy of this message
Remember that you can't do like Chrigu and Nate said if you want to add methods from a static class (Hence you can't create any instances of it). A workaround is to create lambda functions calling the methods: // Our static handler class static class MyHandler { public function getPrice($item) { $prices = array("apple" => 4, "orange" => 5); return $prices[$item]; } public function buy($item, $number) { $price = self::getPrice($item) * $number; do_thing_to_sell_the_item(); return $price; } } // Use reflection to get method names and parameters $mirror = new ReflectionClass("MyHandler"); foreach ($mirror->getMethods() as $method) { // Create new "lambda" function for each method // Generate argument list $args = array(); foreach ($method->getParameters() as $param) { $args[] = '$'.$param->getName(); } $args = implode(',', $args); // Generate code $methodname = $method->getName(); $code = "return {$real_class}::{$methodname}({$args});"; // Create function, retrieve function name $function_name = create_function($args, $code); // Register the function xmlrpc_server_register_method($myserver, $methodname, $function_name); } ---- Manual Page -- http://www.php.net/manual/en/function.xmlrpc-server-register-method.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+51340 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+51340&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+51340&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+51340&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+51340&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+51340&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+51340&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#87078) next »