从php调用F#(。net dll)代码

时间:2010-09-02 19:09:08

标签: php .net com dll f#

我想知道是否可以从php调用一些F#代码。看起来Phalanger就是这样做的。有人用吗?对于这个解决方案和其他解决方案(如果有的话?),它对服务器有什么要求来运行代码?

谢谢

3 个答案:

答案 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之外的其他服务器平台上的优势。