已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > HTML/CSS/JS

标题: 老虎,或许你要的

作者: @Ta

时间: 2012-05-06

点击: 5992

  Phalanger 是一种 PHP 语言编译器,也是针对 .NET 的 PHP 运行时。 它可以用于把 PHP web 项目编译成 .NET 字节码,并在 Windows 中使用 IIS 或者在Linux 上使用 Mono 和 Apache 作为 ASP.NET应用程序来执行。 然而,Phalanger 不仅仅是把已经存在的 PHP 应用编译到 .NET 中。
  我们可以使用 Phalanger 创建组合 .NET 和 PHP 的解决方案,所采用的方式用标准的 PHP解释器是不可能做到的。 有了 Phalanger 扩展,PHP 程序可以直接使用 .NET 类,而 .NET 程序(比方说用 C# 编写的)也可以动态地调用 PHP 脚本,或者使用在 PHP 中实现的函数和类【 6 】。
  本文中,我么会简要地介绍 Phalanger,然后查看三种使用方案。 我们会讨论如何整合 PHP 应用程序和 .NET;如何高效地在 Windows 上运行 PHP 应用程序,以及如何使用 PHP 作为 ASP.NET的视图引擎(view engine)。
Phalanger 简介
  Phalanger 已经存在一段时间了。 第一版 Phalanger 是于 2003 年在布拉格的查尔斯大学作为软件项目创建的。稍后就开始了2.0版本的开发,并且于 2006 年在 CodePlex 作为开源项目发布。 微软支持了这个项目一段时间,后来一位 Phalanger 开发者加入微软,并从事动态语言运行时方面的工作。
  Phalanger 相关活动在 2008年恢复,这多亏有了与 Jadu 的合作,它使用 Phalanger 为在 PHP 中开发的 CMS 构建了 .NET 版本。 从 2010 年开始,Phalanger 的开发主要由 DEVSENSE 提供资金支持,它也为 Phalanger 提供了商业支持。最近发布的版本 Phalanger 2.1【 7 】,其中提升了与标准 PHP 实现的兼容性,在动态操作的实现过程中利用了 DLR,并提供了 PHP 和其他 .NET 语言(像C#、F#和 Visual Basic)之间的互操作性。
Phalanger 的组件
  Phalanger 包括多个部分独立的组件,可以用来开发运行在 .NET 上的 PHP 应用程序,并使用 .NET 或 Mono 来运行它们:
*. Phalanger 编译器
Phalanger 会把 PHP 源代码编译成 .NET 程序集,它可以使用 .NET JIT(Just-in-time 编译器,它会为当前平台生成本地代码)执行。 编译后的 PHP 代码会使用 Phalanger 运行时和动态语言运行时,从而提供了 PHP 语言动态特性的高效率实现。
*. Phalanger 运行时和类库
Phalanger提供了对数组之类 PHP 特性的实现。 Phalanger 还包含了针对I/O、正则表达式以及其他标准 PHP 类库的 .NET实现。

[隐藏样式|查看源码]


『回复列表(17|隐藏机器人聊天)』

1. 你为什么把我当初给你介绍的东西复制给我?
(/@Ta/2012-05-06 23:01//)

2. 问题的关键是要怎么使用它。我没有找到明确的步骤(不想看英文文档)。虽然有人用它编译过wordpress,但是也没有详细过程。
(/@Ta/2012-05-06 23:06//)

3. 另一个问题是它是否支持在程序执行时动态编译和动态加载编译好的php代码,这关系到很多模板引擎(如smarty)能否正常工作。
还有它对PHP5的支持怎么样也不清楚。
(/@Ta/2012-05-06 23:12//)

4. 不过要不是你提起的话,我都已经忘记这个东东了。
kb.cnblogs.com/page/138573/
看样子很方便的样子,哪天去把hu60wap5编译了看看。
(/@Ta/2012-05-06 23:21//)

5. 回一楼,此物今日逛博客园见到
(/@Ta/2012-05-06 23:44//)

6. 像php模板之类的,可能有不容喔,smarty和php的自动加载就不能同时用
(/@Ta/2012-05-06 23:46//)

7. 像php模板之类的,可能有不容喔,smarty和php的自动加载就不能同时用
(/@Ta/2012-05-06 23:46//)

8. 你忘记我曾经和你谈过它的吗?啊啊啊啊,你是不是原来那个企鹅烧香?不会是假冒伪劣的吧?(笑)
(/@Ta/2012-05-06 23:48//)

9. @企鹅烧香 我十分激动地要你看这段代码:
/*注册自动加载类的函数*/
spl_autoload_register('autoload_file');
spl_autoload_register('__autoload');
由于smarty使用了SPL自动加载类,所以我们也必须使用SPL注册一下我们的自动加载类函数
可以注册多个,系统会依次调用直到成功
(/@Ta/2012-05-06 23:53//)

10. @企鹅烧香 我十分激动地要你看这段代码:
/*注册自动加载类的函数*/
spl_autoload_register('autoload_file');
spl_autoload_register('__autoload');
由于smarty使用了SPL自动加载类,所以我们也必须使用SPL注册一下我们的自动加载类函数
可以注册多个,系统会依次调用直到成功
(/@Ta/2012-05-06 23:53//)

11. php的自动加载规则是当SPL的自动加载函数存在时就忽略__autoload(),但解决方法很简单,像下面一样在SPL里注册一下__autoload即可
(/@Ta/2012-05-06 23:56//)

12. 啊啊啊啊啊啊!不懂!
(/@Ta/2012-05-07 04:21//)

13. spl_autoload_register('autoload_file');
,autoload_file(就这样用不)
(/@Ta/2012-05-07 06:30//)

14. 你记忆力真好,我没和你谈过smarty,好不?不过说实话,像模板这玩意也挺麻烦的,php也有框架这东西,比如think,中国自己的。好像不仅带有模板,还有啥单入口,URL路由,对了,虎林就用了这技术吧,http://hu60.tzhwap.com/wap/m.php/I6jmkug就像这玩意g0D4MN6th84N4CoAAA/read.php?id=bbs
(/@Ta/2012-05-07 06:35//)

15. 你对cil有研究不,.maxstack 8,堆栈的最大深度,我咋搜不到,cli的一个栈,是几个字节,好像我看的汇编,可以自己设定。
(/@Ta/2012-05-07 06:38//)

16. @企鹅烧香 我说的是我和你谈过Phalanger。
autoload的用法是,当你第一次使用某个类时,系统会自动依次调用所有注册的自动加载函数,直到加载成功。
所以,我们写好规则之后就可以直接
$a=new a();
不需要事先include 'a.class.php';
(/@Ta/2012-05-07 10:02//)

17. 我对.NET的了解仅限于能看懂*.aspx,其他不清楚。
(/@Ta/2012-05-07 10:03//)

回复需要登录

7月18日 13:18 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1