gpt4 book ai didi

c# - .net 的 Phalanger 和 php 库

转载 作者:搜寻专家 更新时间:2023-10-31 21:39:28 24 4
gpt4 key购买 nike

我尝试在我的 .net 应用程序中使用三个 php 类。我使用 Phalanger 获取这三个类并使用以下命令制作一个 .dll 文件:

phpc /target:dll Client.php Crypt.php Exception.php

当然输出了 Client.dll 和一个 Client.pdb 文件。

从那里我转到 VS2012 并创建了一个新的 asp.net 应用程序并添加了 Client.dll 作为引用。但是我没有看到任何类的公共(public)方法,对象浏览器窗口显示:

Client>Client>Base Types>Object (so that I only have the methods of type Object)

我试过了this让它工作的方法/教程涉及将自定义界面转换到您的对象上,但是我收到错误:

the type or namespace name ScriptContext could not be found

这当然意味着它不知道 ScriptContext 是什么或在哪里。但是本教程是 2007 年的,所以我不知道它是否已经过时或者我应该从哪里获得该类(class)?

other tutorial我发现它和旧的一样。它说:

If you want to use existing PHP source (developed for standard interpreter) without modifications you have to use legacy mode, but when you want to develop new PHP project you can consider using pure mode

但我无法在文档中找到遗留模式的步骤,我更愿意尝试“纯”模式(这样我就不必更改/编辑我现有的 php 代码)。我确实尝试过(纯模式)但是它不会用上面的命令编译(phalanger 编译)(将 DynamicObject.php 类添加到命令中)。

如何在 php 类中获取我的公共(public)方法?

最佳答案

phpc /target:dll Client.php Crypt.php Exception.php

在传统(标准)模式下创建 DLL。此 DLL 包含“奇怪的” namespace ,需要与 PHP 语义兼容。 (这些命名空间将代码与不同的脚本文件分开)。 .NET interoperability overview of Phalanger 3.0博文描述了如何使用在标准模式下编译的脚本。

命令行选项 /pure+ 告诉编译器创建所谓的纯模式程序集。在这种模式下,编译器连接所有源文件并将它们编译为一个文件(就像 C# 所做的那样),没有任何奇怪的命名空间。如果您在 PHP 类声明上方指定 [\Export] 属性,生成的 DLL 看起来就像是从 C# 代码编译而来,您将能够正常引用它并使用它的类。

关于c# - .net 的 Phalanger 和 php 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com