0

我正在用 ruby​​ 编写一个应用程序,并希望访问一些用另一种语言 (php) 编写的遗留代码。不幸的是,这个遗留代码没有 HTTP API,但它存在于同一个文件系统上。我有一个想法,也许不是构建一个 API,或者用 ruby​​ 重写所有代码,而是有一些聪明的方法可以公开这些 PHP 函数,以便 ruby​​ 可以访问它们。您有什么想法或方法可以用来完成此任务吗?

4

2 回答 2

2

假设您的意思是可在命令行调用的代码,使用反引号%x运算符或更复杂system的命令popenpopen3您可以执行单独的代码片段并收集结果。

例如在 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"

有关更多信息,请参阅“ Ruby,exec、system 和 %x() 或反引号之间的区别”。

于 2012-07-18T18:44:33.383 回答
0

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

如果你想走上一条更冒险的路线,你可以看看将 php 编译成 exes(将 PHP 脚本转换为独立的 windows 可执行文件),然后通过反引号、系统等执行它们......

不过,最好重写它。

于 2015-02-07T04:49:31.510 回答