【问题标题】:Calling F# (.Net dll) code from php从 php 调用 F# (.Net dll) 代码
【发布时间】:2011-04-07 12:26:28
【问题描述】:

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

谢谢

【问题讨论】:

  • 前段时间我有一个类似的问题,从 PHP 调用 C# 代码。直到今天我还不知道 phalanger,所以我尝试了 PHP COM 扩展......不是好主意,速度慢而且有问题,我最终放弃并使用了 web 服务。因此,即使我不能推荐任何好的库,我也可以建议远离 PHP 的 COM 扩展。

标签: php .net com dll f#


【解决方案1】:

是的,您可以使用 PHP COM 类,但它仅适用于 PHP5+ 的 Windows 版本,无需单独安装。所以,你这样做:

<?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 显示所有已完成的更改。

【讨论】:

    【解决方案2】:

    Phalanger 应该能够直接调用 F# 代码(就像任何其他已编译的 .NET 代码一样。代码与使用标准 PHP 类型时的代码相同(尽管 Phalanger 具有允许您使用 .NET 特定内容的扩展,例如泛型 - 使用 PHPCOM 可能会很棘手)。

    从使用 Phalanger 编译的 PHP 站点运行 F# 代码的要求只是 .NET 2.0+ 和 IIS(用于托管网站)。对于 F#,您需要引用您的 F# 库和 FSharp.Core.dll(其中包含 F# 运行时和基本类型)。

    PS:我参与 Phalanger 有一段时间了,所以如果您有任何问题,请告诉我 - 我可以将它们转发给当前的开发人员(如果您有兴趣,他们也可以提供一些商业支持)。

    【讨论】:

      【解决方案3】:

      Phalanger 似乎在做的事情上做得更好,因为它有效地使 PHP 成为 .NET 语言,它是与其他 .NET 语言互操作性的明显选择。尽管我可以想象,但对您的 PHP 代码进行了相当多的更改。

      如果这对你不起作用,那么我同意上面的 Max。使用 WebService,如果在同一台服务器上运行,它仍然会非常快,并且具有通过 Mono 和 mod_mono 仍然可以部署在 Windows 以外的其他服务器平台上的优势。

      【讨论】:

        猜你喜欢
        • 2010-10-03
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 1970-01-01
        相关资源
        最近更新 更多