浏览模式: 标准 | 列表

PHPRPC for Ruby,Java,Python,PHP,ASP 增加了 P3P 支持。

PHPRPC for JavaScript(包括 js 和 ajs 版本),修正了同一会话不同页面中的 JavaScript 客户端在加密传输时可能会产生密钥冲突的问题。

下载地址:http://www.phprpc.org/download

» 阅读全文

12月
14

PHPRPC 3.0.3 for Ruby 发布

更新内容与 PHPRPC 3.0.1 for Python 2.5/2.6 类似,增加了在发布的方法中直接使用 session 的能力,不过与 Python 不同的是,Ruby 版本不支持在带有可变参数的方法中使用 session,但是 Python 版本是支持的。

下载地址:http://www.phprpc.org/download

» 阅读全文

9月
14

PHPRPC 3.0 for Ruby

该版本支持 Ruby 1.8.5 及其更高版本。包括客户端和服务器的实现。服务器除了支持以 cgifcgiscgilsapi 方式运行外,还支持以独立服务器 ( mongrelthinebbwebrick ) 方式运行。

服务器开发接口统一,不管以什么方式运行,程序写法都是一模一样的。这里推荐以 mongrel 或 thin 独立服务器方式运行,因为这两种运行方式相比其他方式来说要快速稳定。

下载:http://www.phprpc.org

» 阅读全文

同样废话不多说,看例子:

Ruby代码
  1. class Test  
  2.   def initialize  
  3.     @foo = 'a'  
  4.     @bar = 'b'  
  5.   end  
  6.     
  7.   def foobar(a, b)  
  8.     puts @foo << a << @bar << b  
  9.   end  
  10. end  
  11. x = Object.const_get("Test").new  
  12. args = ['1''2']  
  13. x.method('foobar'.to_sym).call(*args)  

Ruby太简单了,我想解释也可以省了。

 

» 阅读全文

废话不多说,先看例子:

Ruby代码
  1. Object.module_eval("class Test1\nend")  
  2. x = Object.const_get("Test1".to_sym)  
  3. x.method(:attr_accessor).call("test1".to_sym)  
  4. x.method(:public).call("test1".to_sym)  
  5. x.method(:public).call("test1=".to_sym)  
  6. x.method(:attr_accessor).call("test2".to_sym)  
  7. x.method(:public).call("test2".to_sym)  
  8. x.method(:public).call("test2=".to_sym)  
  9. x.method(:attr_accessor).call("test3".to_sym)  
  10. x.method(:public).call("test3".to_sym)  
  11. x.method(:public).call("test3=".to_sym)  
  12. y = Test1.new  # also can use x.new  
  13. y.test1 = 'Hello'  
  14. y.test2 = 'Ruby'  
  15. y.test3 = 1.86  
  16. puts y.class  
  17. puts y.test1, y.test2, y.test3  

原理就是利用 module_eval 定义一个空类,然后利用 const_get 获取到该类的引用,最后利用反射机制调用 attr_accessor、public 等方法完成类的定义。

这样做有什么好处呢?好处是,只要我们知道类名及其属性名,就可以动态的创建一个类,这在反序列化未知类的对象时是非常有用的。

» 阅读全文