我想知道是否可以从php调用一些F#代码。看起来Phalanger就是这样做的。有人用吗?对于这个解决方案和其他解决方案(如果有的话?),它对服务器有什么要求来运行代码?
谢谢
答案 0 :(得分:5)
是的,您可以使用 PHP COM 类,但它仅适用于 Windows 版本的PHP5 +,无需单独安装。所以,你喜欢这样:
<?php
$obj = new COM("myfsharp.dll");
$output=$obj->HelloWorld(); // Call the "HelloWorld()" method from the DLL.
// once we created the COM object this can be used like any other php classes.
echo $output;
?>
如果您对使用PHP COM 类持怀疑态度,那么从PHP Manual读取此:
从PHP 5开始,这个扩展(和本文档)从头开始重写,并且已经删除了许多旧的混乱和伪造的错误。此外,我们支持使用Microsoft提供的COM互操作性层实例化和创建.Net程序集。
This article显示已完成的所有更改。
答案 1 :(得分:5)
Phalanger应该能够直接调用F#代码(就像任何其他已编译的.NET代码一样。代码与使用标准PHP类型时的代码相同(尽管Phalanger的扩展允许您使用.NET特定的东西,如泛型 - 使用PHPCOM可能很棘手。)
从使用Phalanger编译的PHP站点运行F#代码的要求只是.NET 2.0+和IIS(用于托管网站)。对于F#,您需要引用您的F#库和FSharp.Core.dll
(包含F#运行时和基本类型)。
PS:我参与了Phalanger已有一段时间了,所以如果您有疑问,请告诉我 - 我可以将它们转发给当前的开发人员(如果您有兴趣,他们也可以提供一些商业支持)。< / em>的
答案 2 :(得分:0)
Phalanger似乎在做得越来越好,因为它有效地使PHP成为.NET语言,它是与其他.NET语言互操作的明显选择。尽管我想象你的PHP代码有很多变化。
如果这对您不起作用,那么我会同意上面的Max。使用WebService,如果在同一台服务器上运行,它仍然非常快,并且具有通过Mono和mod_mono仍然可以部署在除Windows之外的其他服务器平台上的优势。