gpt4 book ai didi

php - 用于 PHP 的 JSON-RPC 2 客户端能够调用嵌套类中的方法

转载 作者:行者123 更新时间:2023-12-04 04:47:26 24 4
gpt4 key购买 nike

我有 JSON-RPC2 服务器,它为某些服务提供接口(interface)

$server = new Server;
$server->service1 = new Service1($this);
$server->service2 = new Service2($this);

我想知道,是否有任何(最好是 PHP)客户端能够调用这些服务的方法,因为我需要它来进行调试。

我测试了一个客户端,它可以直接调用方法:
$client = new jsonRPCClient('http://localhost/jsonrpcphp/server.php');

// This works
$response = $client->giveMeSomeData('name');

// This doesn't
$response = $client->service1->giveMeSomeData('name');

我的原始客户端是 CoffeScript 应用程序,它以这种方式调用方法:
@get("api").call "service1.giveMeSomeData", "name", (result) =>

是否有任何我可以以相同方式使用的 PHP 的 JSON-RPC2 客户端?

最佳答案

JSON-RPC 是一个非常简单的协议(protocol)。端点的命名空间是 FLAT。没有从单个端点公开的类(更不用说多个类)。

当 CoffeeScript 客户端调用 service1.giveMeSomeData 时,它实际上是要求 PHP Web 服务执行一个名为 service1.giveMeSomeData 的端点方法。 .如果您的网络服务然后将其路由到 giveMeSomeData当前分配给实例 Service1 的某个类的实例中的方法,好吧,就这样吧! (PHP 服务端)。这不是 JSON-RPC 的特性,它是由您使用的端点路由器组成的。

PHP 客户端的等效调用可能类似于 $client->call('Service1.giveMeSomeData', array('name'))这取决于您使用的 JSON-RPC 库。一些 PHP 客户端库构建了一个 ad-hoc 类的实例,它实现了 PHP __call方法,这样任何无法识别的方法名称都被重定向为对该类中通用 RPC 调用方法的调用。

需要明确的是,JSON-RPC 端点没有提供多个命名空间,只有一个平面命名空间可以包含 . 的方法。 (点)名称中的字符。您的 Web 服务端点如何将这些调用路由到 PHP 函数/方法完全取决于您/它。

PS。如果您解释您在 PHP 中为 JSON-RPC 使用的客户端和服务器库(有很多,质量和完整性各不相同),您将获得更好的帮助。

关于php - 用于 PHP 的 JSON-RPC 2 客户端能够调用嵌套类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17973860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com