当前位置: 网学 > 编程文档 > PHP > 正文

我们可以使用Phalanger创建组合.NET和PHP的解决方案

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/02
 = 99.9 };  return View ();  }  }  控制器组件是通过 HomeController 类实现的,它会继承 ASP.NET MVC 控制器。 类中只包含一个动作,展现应用程序的索引页面。 当用户访问/Home/Index(或者根 URL)的时候就会触发这个动作。 它会创建模型(Product 类的实例)并把它传递给视图组件。在标准的 ASP.NET MVC 应用程序中,视图组件通常会使用 ASPX 页面或者使用带有使用 C# 或 Visual Basic 编写的代码的 Razor 视图来实现。 Phalanger 让我们可以使用 PHP 来实现视图。 代码 3 展示了这个例子。代码 3 示例 Web 应用程序(PHP)的视图<html><head>    <title>Sample view written in PHP</title>  </head>  <body>    <h1>Product Listing using Phalanger</h1>    Product: <? echo $MODEL->ProductName; ?><br />    Price: <? echo $MODEL->Price; ?>  </body></html> 视图会使用下面描述的 ASP.NET MVC 扩展来渲染。 扩展会执行代码 3 中所示的 PHP 脚本,并定义名为$MODEL 的全局变量,其中会包含控制器返回的数据。 在上述示例中,$MODEL 是对标准 .NET 类的引用。 Phalanger 会对 .NET 类和 PHP 对象同等对待,所以使用 echo 结构,我们很容易就可以显示产品的属性。示例显示了应用程序的基本结构,但是它极为简单,所以不会真正显示出在表现层使用 PHP 所能给我们带来的好处: PHP 与生俱来的动态特性使得渲染任何结构的数据都很简单。 视图并不仅限与简单脚本,并且可以使用任何现存的 PHP 库,包括流行的模板引擎(templating engines)。 视图可以使用 PHP 的 include 功能实现多文件的结构,这样你可以完全控制页面如何生成。 创建视图的开发者不需要知道任何关于 .NET 的知识。 这意味着从 PHP 转型为 C# 的公司,仍然支持现存的开发者技能。为了让你更好地了解这个方案的工作方式,以下部分会说明关于 PHP 和 C# 整合的技术细节。 如果你对细节不感兴趣,那么就可以直接跳到总结部分。透过现象看本质这个部分所描述的方案基于 PicoMVC 项目【4】,它让我们可以组合 PHP 和 F#。 为了让示例更简单,我把代码从F#转换为C#。 在 PicoMVC 中 PHP 整合的核心是一个简单的函数,它会取得 PHP 脚本的文件名,并使用 Phalanger 运行时来运行。 函数如代码 4 所示。代码 4 从 ASP.NET web 应用程序调用 PHP 脚本void PhalanagerView (string fileName, object model, HttpContext current) {    // Initialize PHP request context and output stream   using(var rc = RequestContext.Initialize (ApplicationContext.Default, current))    using(var byteOut = HttpContext.Current.Response.OutputStream)    using(var uftOut = new StreamWriter (byteOut)) {  // Current context for evaluating PHP scripts  var phpContext = ScriptContext.CurrentContext;  // Redirect PHP output to the HTTP output stream  phpContext.Output = uftOut;  p
  • 下一篇资讯: 提高PHP代码质量36计
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号