phalconplus Documentation v1.0.0-rc-1
Class
Class PhalconPlus RPC Client Adapter

# Remote

    namespace PhalconPlus\RPC\Client\Adapter;
    use PhalconPlus\RPC\Client\AbstractClient;

    class Remote extends AbstractClient
    {
        private remoteServerUrl;
        private client;

        public function __construct(array remoteServerUrl, array opts = [])
        {
            if empty remoteServerUrl {
                throw new \Exception("server url can not be empty");
            }
            var key;
            let key = array_rand(remoteServerUrl);
            let this->remoteServerUrl = remoteServerUrl[key];
            let this->client = new \Yar_Client(this->remoteServerUrl);

            if !empty opts {
                var optKey, optVal;
                for optKey, optVal in opts {
                    this->client->setOpt(optKey, optVal);
                }
            }
        }

        public function callByObject(array rawData)
        {
            return this->client->callByObject(rawData);
        }

        public function __call(string! method, array args)
        {
            if method_exists(this->client, method) {
                // error_log("Remote RPC set Opts: " . method . " args: " . var_export(args, true));
                return call_user_func_array([this->client, method], args);
            } else {
                throw new \Exception("method not exists");
            }
        }

    }