可以使用C#编写PHP扩展吗?

时间:2018-01-14 19:22:41

标签: c# php .net

是否可以使用C#创建PHP扩展?

我们需要将PHP连接到我们用针对Windows的C#.NET 4.6编写的内部库,并且希望尽可能接近PHP而不需要有一个我们可以调用外部到php的服务器,因此在家里扩建的想法。

我看了几个选项:

  1. 使用PHP DOTNET扩展来调用C#程序集。

    • 据我所知,这个扩展程序不适用于.NET 4+,C#代码需要4.6遗憾。
  2. 编写PHP扩展名。

    • 到目前为止,我只看过使用Win32和C ++的Windows示例,理想情况下,如果扩展名可以用C#编写,那就太好了。我想使用我们需要的C#代码创建一个lib,然后在Win32 / C ++扩展中使用它,如果我绝对不得不尝试它。
  3. 将C#代码称为外部服务。

    • 作为最后一个选项,这是可行的,我可以看到这对其他来源使用更灵活(即PHP,Java,C#等)
  4. 能够使用C#编写PHP扩展是很有意思的,假设这是可能的。如果可能的话,我可以看到这可能不是“最佳”选项。

    感谢阅读和建议!!!

1 个答案:

答案 0 :(得分:0)

基于@SevaAlekseyev的想法,我能够让PHP使用COM调用C#。

<?php
$object = new COM('ComClassExample.ComClassExample');
echo '1 and 1 added: ' . $object->AddTheseUp(1,1);
?>

使用以下网站,我能够制作一个像COM对象一样暴露自己的C#dll。 https://whoisburiedhere.wordpress.com/2011/07/12/creating-a-com-object-from-scratch-with-c/

通过对Post-build事件的一点调整,我能够为PHP加载新版本(必须复制,因为PHP收到了拒绝访问的消息)

iisreset /stop
copy /Y "$(TargetPath)" C:\com\$(TargetFileName)
$(frameworkdir)\$(frameworkversion)\regasm.exe C:\com\$(TargetFileName) /codebase /tlb /nologo
iisreset /start

@JuanDelaCruz Peachpie看起来像一个有趣的工具,但它看起来好像是在部署之前编译的,暂时不能在我们的商店中使用。

全部谢谢!