diff -r 000000000000 -r 4eba9c11703f web/Zend/XmlRpc/Client/ServerProxy.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/Zend/XmlRpc/Client/ServerProxy.php Mon Dec 13 18:29:26 2010 +0100 @@ -0,0 +1,95 @@ +foo->bar->baz()". + * + * @category Zend + * @package Zend_XmlRpc + * @subpackage Client + * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_XmlRpc_Client_ServerProxy +{ + /** + * @var Zend_XmlRpc_Client + */ + private $_client = null; + + /** + * @var string + */ + private $_namespace = ''; + + + /** + * @var array of Zend_XmlRpc_Client_ServerProxy + */ + private $_cache = array(); + + + /** + * Class constructor + * + * @param string $namespace + * @param Zend_XmlRpc_Client $client + */ + public function __construct($client, $namespace = '') + { + $this->_namespace = $namespace; + $this->_client = $client; + } + + + /** + * Get the next successive namespace + * + * @param string $name + * @return Zend_XmlRpc_Client_ServerProxy + */ + public function __get($namespace) + { + $namespace = ltrim("$this->_namespace.$namespace", '.'); + if (!isset($this->_cache[$namespace])) { + $this->_cache[$namespace] = new $this($this->_client, $namespace); + } + return $this->_cache[$namespace]; + } + + + /** + * Call a method in this namespace. + * + * @param string $methodN + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + $method = ltrim("$this->_namespace.$method", '.'); + return $this->_client->call($method, $args); + } +}