如何在PHP中实例化具有参数构造函数的.NET类?

6

我希望在PHP中使用.NET的一个类,所以我使用了PHP的DOTNET类。我想实例化一个具有参数构造函数的类。

$e = new DOTNET($full_assembly_string, $full_class_name);

我该如何通过这个API传递构造函数参数?


那又怎样?你遇到错误了吗? - u_mulder
1
@u_mulder 不,仅仅是不清楚如何通过这个API传递.NET类的构造函数参数。 - deceze
5
这个页面说“另一个问题是,您无法在DLL中传递参数到类构造函数”,听起来可能是php dotnet功能的限制。您能否修改.NET代码,创建一个工厂类的实例,然后调用其上的方法来构造您真正需要的对象? - James Thorpe
@AtifMajeed 如果我的回答对您有帮助,您可以将其标记为正确并/或点赞。 :-) - Adrian Cid Almaguer
@AdrianCidAlmaguer(不受你的评论影响)。如果你看到他有多个问题,其中可能有一个正确答案,你也可以提醒他,在其他问题上也可以接受答案,如果有这样的答案。 - Rizier123
@Rizier123 谢谢,我总是从你的评论中学到很多东西;-) - Adrian Cid Almaguer
1个回答

0

无法这样做

在进行此集成时,可能需要考虑一些问题:

  1. 公共方法

就像PHP手册所说的那样,返回的对象是一个重载的对象,这使得PHP无法识别对象可能包含的公共方法。因此,如果您使用var_dump对其进行转储,您将看到一个空数组。这就是为什么在调用它之前必须了解内部DLL类结构的原因。

幸运的是,我们还有另一个专门用于此工作的工具,即随.NET框架一起提供的ildasm.exe。它位于c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \或c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v6.0A \ bin下的gacutil.exe旁边。 要加载和显示DLL结构,只需调用“ildasm.exe \ path \ to \ your.dll”即可。

2.参数 另一个问题是,您无法向DLL中的类构造函数传递参数。

  1. 数据类型

作为两种不同的编程语言,我们涉及到不同的数据类型。也就是说,您必须确保DLL类方法返回PHP可以理解的数据类型(主要是字符串、整数、布尔值等)。如果您的方法需要返回数组列表或更复杂的结构,则可能需要考虑使用JSON进行编码。

阅读更多信息,请访问

http://blog.zitec.com/2012/handling-net-assemblies-in-php/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,