如何公开用不同语言编写的对象/函数?

时间:2012-07-18 18:28:32

标签: ruby api programming-languages

我正在用ruby编写一个应用程序,并希望访问一些用另一种语言(php)编写的遗留代码。遗憾的是,此遗留代码没有HTTP API,但它存在于同一文件系统中。我有一个想法,也许不是构建一个API,或重写ruby中的所有代码,可能有一些聪明的方式我可以公开这些PHP函数,所以ruby可以访问它们。你有什么想法或方法可以用来实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

假设您指的是在命令行可调用的代码,使用backticks%x运算符或更复杂的systempopen和{{3命令允许您执行单独的代码片段并收集结果。

例如在IRB中:

irb(main):002:0> puts `ls`
Desktop
Documents

在方法中包装它,它成为调用外部程序的一种方式:

def ls(s='')
`ls #{s}`
end

ls() # => "Desktop\nDocuments\nDownloads\nLibrary\nMovies\nMusic\nPictures\nPublic\nSites\nVirtualBox VMs\nbin\ndevelopment\nlibsmi\nperl5\nproduction\nshare\ntest.data\ntmp\n"
ls('M*') # => "Movies:\n\nMusic:\niTunes\n"

有关其他信息,请参阅“popen3”。

答案 1 :(得分:0)

我能想到的唯一合理的解决方案是重写php的块或写一个http api。

如果你想开始一个更具冒险性的路线,你可以看看将php编译成exes(Convert a PHP script into a stand-alone windows executable),然后通过反引号,系统等执行它们......

尽管重写它可能是最好的。