首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于.net的Phalanger和php库

用于.net的Phalanger和php库
EN

Stack Overflow用户
提问于 2012-10-11 17:49:17
回答 1查看 2K关注 0票数 3

我尝试在我的.net应用程序中使用三个php类。我使用Phalanger来接受这三个类,并使用以下命令创建一个.dll文件:

代码语言:javascript
复制
phpc /target:dll Client.php Crypt.php Exception.php

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

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

Client>Client>Base Types>Object (因此我只有类型对象的方法)

我尝试过方法/教程来使它工作,这涉及到将自定义接口转换到对象上,但是我得到了错误:

无法找到类型或命名空间名称ScriptContext。

当然,这意味着它不知道ScriptContext的内容和位置。然而,本教程是从2007年开始的,所以我不知道它是不是太过时了,或者我应该从哪里得到这门课?

我发现的其他教程也一样古老。上面写着:

如果您想使用现有的PHP源代码(为标准解释器开发)而不作修改,您必须使用遗留模式,但是当您想要开发新的PHP项目时,可以考虑使用纯模式

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

如何在php类中访问我的公共方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-12 15:39:34

代码语言:javascript
复制
phpc /target:dll Client.php Crypt.php Exception.php

以遗留(标准)模式创建DLL。这个DLL包含“怪异”的名称空间,这是与PHP语义兼容所必需的。(这些命名空间将代码与不同的脚本文件分开)。Foreanger3.0的.NET互操作概述博客文章描述了如何使用标准模式编译的脚本。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12845562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档