我基本上是在寻找Apache Thrift,而是在Ajax和PHP之间进行JavaScript讨论。我知道Thirft生成两者,但据我所知,JavaScript代码必须通过JSONProtocol进行讨论,其中协议尚未用PHP编写。
还有其他可以提出的替代方案吗?
如果您不熟悉Thrift,这是我需要的简单(ish)定义:
将此视为通用接口定义语言(IDL),我在其中设置User对象,AuthenticationResult结果对象和名为UserCommands.Authenticate()的方法;
struct User {
1: number id,
2: string firstName,
3: string lastName
}
struct AuthenticationResult {
1: number currentTime,
2: User user
}
service UserCommands {
AuthenticationResult Authenticate(1:string username, 2:string password)
}
我运行程序或其他东西,它基于上面创建JS和PHP库。
然后,在JS中,我可以调用(使用有用的类型提示)。
var myAuthResult = UserCommands.Authenticate('myUser', 'myPass');
alert ("My first name is : " + myAuthResult.user.firstName);
在PHP中,我会在UserCommands类中设置一个方法,如下所示:
function Authenticate($username, $password) {
$myUser = new User();
$myUser->firstName = "Fred";
$myUser->lastName = "Thompson";
$myAuthResult = new AuthenticationResult ();
$myAuthResult->currentTime = date("U");
$myAuthResult->user = $myUser;
return $myAuthResult;
}
好处是PHP可以返回本机对象,JS可以期望接收自己的本机对象。提供可用方法的类型提示,包括预期的参数和返回结果。
任何想法将不胜感激!
首先,在php中有json_encode
和json_decode
函数。
其次,本机php类型有序列化/反序列化
但是,我不明白你的意思是“......协议尚未用PHP编写。”
此外,还有一个Haxe语言,可以“编译”成PHP和JavaScript(以及其他一些语言)