快速业务通道

把PHP作为C#程序的脚本语言

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
 1Operators.SetVariable(context, null, "X", "Hello World!");

  最终我们将使用的Eval方法来运行PHP代码. 而这个方法实际上被Phalanger内部用来处理PHP的 eval() 表达式.所以这就是为什么这个方法有如此多参数的原因。

  01// evaluate our code:

  02return DynamicCode.Eval(

  03 code,

  04 false,/*phalanger internal stuff*/

  05 context,

  06 null,/*local variables*/

  07 null,/*reference to "$this"*/

  08 null,/*current class context*/

  09 "Default.aspx.cs",/*file name, used for debug and cache key*/

  10 1,1,/*position in the file used for debug and cache key*/

  11 -1,/*something internal*/

  12 null/*current namespace, used in CLR mode*/

  13);

  如果运行代码表现得和全局php代码一样时,大部分参数看上去就没什么特别之处了。最重要的参数就是code.该参数是一个包含你的php代码的字符串。Phalanger将先转译然后再编译这段代码。转换出的.net字节码被将被作为临时程序集被存储在内存中(我们也称它为瞬时程序集)

  。注意整个转译以及编译的过程很快,因为瞬时程序集也会被缓存起来加速的运行相同PHP代码。

  如你所见,你也能在参数file name以及 postion中提供文件名以及文件所在位置;所以当你调试代码然后单步调试进入表达式时,它将会刚好跳到position参数指定的位置。

  注意被缓存的瞬时程序集是否被更新将依赖于ScriptContext前面执行的PHP代码(比如定义好的类以及方法),只有前后两次生成的PHP代码一致时,瞬时程序集才能被缓存下来。这就是为什么Eval方法中的参数code,file name以及position与前面的的匹配时才能缓存后被重用。

  那么我们要记住,当随后要运行更多的PHP代码片段时你应该首先考虑这个问题。

  最后如果你打算在web应用程序中使用Phalanger时,你应该首先就初始化PHP.Core.RequestContext, 然后在php脚本结束时销毁它。

  1using (var request_context = RequestContext.Initialize(

  2 ApplicationContext.Default,

  3 HttpContext.Current))

  4{ /* all the stuff above */ }

  总结:

  总共就是这些。 因为后面执行的的PHP代码中也包含了已经定义好的PHP方法,变量以及类,所以你也能在.net代码中使用它们。

  .net应用程序功能的语言。你也能用这个技术去创建一个使用c#建立域名模块和PHP搭建用户接口的web应用程序。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号