使用PHP调用C#.net .dll脚本

pro*_*het 5 php c#

我有一个C#.net dll脚本,该脚本调用包含SELECT数据的SQL存储过程来运行相关方法。

我需要使用PHP运行dll,因为我的整个应用程序都是使用PHP构建的。

最好的方法是什么?

我对C#完全没有经验。

编辑

我成功使用以下方法注册了.net dll:

RegAsm.exe DllName.dll /tlb:DllName.tlb
Run Code Online (Sandbox Code Playgroud)

我现在应该能够使用COM()如下所述的PHP 方法来调用dll的函数/方法。

但是COM(),由于.net dll被注册为程序集,这些功能是否仍可以通过该方法访问?这有什么不同吗?

编辑

注册.net dll程序集后,当我尝试使用COM()以下方法调用该方法时,出现错误消息:

"PHP Fatal error:  Uncaught exception 'com_exception' with message 'Failed
 to create COM object `DllName.ClassName': Invalid syntax"
Run Code Online (Sandbox Code Playgroud)

编辑

尝试使用:

new DOTNET('DllName, Version=4.0.30319.33440, Culture=neutral,
PublicTokenKey=14843e0419858c21', 'ClassName');
Run Code Online (Sandbox Code Playgroud)

出现internal server 500错误

这是因为PHP无法与.net 4程序集通信吗?

Eri*_*sen 8

选项 1:使用 DLL

您可以使用 PHP 的 COM 类调用该函数。

您需要在 Windows 上运行 PHP,如果您使用的是 C# DLL,我假设您需要在 Windows 上运行 PHP。

脚步:

  1. regasm yourdllname.dll使用命令提示符或运行对话框中的命令注册 DLL 。您的计算机上安装的每个 .NET 版本都有一个RegAsm.exe ,因此请确保通过从%windir%\Microsoft.NET\AppropriateVersion运行该程序来执行 DLL 所针对的 .NET 版本的RegAsm.exe 。
  2. 在 PHP 中创建一个引用 DLL 的类名的 COM 对象。
  3. 调用该函数,该函数将作为您创建的 COM 对象的方法使用。

例子:

$object = new COM('MyDllProjectName.MyDllClassName');
$object->myMethod();
Run Code Online (Sandbox Code Playgroud)

选项 2:用 PHP 重写

如前所述,更简洁的跨平台选项是直接在 PHP 中重新实现 SQL 查询,特别是如果您使用 DLL 的唯一原因是运行查询。

  • 选项 3 通过 Web 服务访问 DLL (4认同)