`
叶落黄昏
  • 浏览: 17138 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

纯java PHP引擎——Quercus

阅读更多

由于公司项目的需要,最经在研究Quercus一个纯java的php引擎。项目这两个需要做的就是将该引擎裁剪,做一个相对安全的版本,提供给ISV使用,同时,在引擎中提供默认的接口供调用。所以先研究了一下,在Quercus引擎的支持下,PHP如何与java集成。

以下是学习到的几点:

1、如果使用 Resin-IoC/WebBeans来组织应用的服务到脚本中,那么脚本中就可以直接获取到配置的服务的单例实例的引用,使用方式如下
<?php
  $demo_manager = java_bean("DemoeManager");
  $demo = $demo_manager->findData("demoId");
  foreach ($demo->getDatas() as $data) {
    echo $data . "\n";
  }
?>

2、另外一种可以通过new Java()方式,以class完整名称以及构造函数参数作为参数来生成对应的java 对象,例如
<?php
  $a = new Java("java.util.Date", 123);
  echo $a->time;
?>


3、Quercus还支持,类似于java 的引用方式,即,在PHP中使用import语句引入class,使用new关键字来创建对象。
<?php
  import java.util.Date;
  $a = new Date(123);
  echo $a->time;
?>
如果是使用Resin框架,会自动加载 WEB-INF/classes/classname.php中配置的的class。

4、在Quercus中,PHP的语法用于激活java对象的方法,下面说明一下通常的方法调用和属性的get和set
<?php
  import java.util.Date;
  $a = new Date(123);
  echo $a->getTime();    # calls getTime()
  echo $a->setTime(456); # calls setTime(456)
  echo $a->time;      # calls getTime()
  $a->time = 456;     # calls setTime(456)
?>

5、在Quercus中,java类被引入了,静态方式和静态属性是可以访问的
<?php
import java.util.Calendar;
$calendar = Calendar::getInstance();
var_dump($calendar);
?>

或者使用new java_class()方式获得class对象

<?php
  $class = java_class("java.lang.System");
  # System.in
  $in = $class->in;
  # System.currentTimeInMillis();
  $time = $class->currentTimeInMillis();
?>

6、关于java对象中的方法重载问题,PHP本身是不支持函数重载的,对参数个数的重载支持得还不错,但是参数个数相同,参数类型不同的重载

支持得就不太好了。我觉得是由于PHP本身所类型有关。比如下面的定义的java类
import com.caucho.quercus.module.AbstractQuercusModule;

public class MyModule extends AbstractQuercusModule
{
  public static void foo(String a, boolean b)
  {
  }

  public static void foo(String a, String b)
  {
  }
}

在PHP中调用
<?php
  foo('abc', false);
?>

就比较含糊,但是还是会调用foo(String a, boolean b)这个接口,因为这个参数类型最接近。尽量少用函数重载

分享到:
评论

相关推荐

    quercus quercus .war 4文件基于Java 的 PHP 框架

    是一个开源 PHP 5 引擎,它已经拥有了纯 Java 的完整实现。Quercus 文档指出,Quercus 在 Resin 应用服务器之上运行,利用了负载平衡、代理缓存等 Resin 特性。本文介绍了在 Apache Tomcat 之上运行 Quercus 所提供...

    Tomcat服务器集成Quercus来支持php, jsp, java的Demo工程

    开发环境 eclipse java EE 4.5.0,jdk 1.7,Tomcat 7.0,Quercus 4.0.39 由Eclipse-jee生成的Dymanic Web Project,Dynamic web module version 3.0(eclipse版本太旧可能没法用) 集成了Quercus,让php也能在...

    quercus-3.1.2

    Quercus是Caucho公司采用纯Java开发的一个PHP5引擎,在Java下运行php ,很强大 。

    quercus,java 里边运行php程序

    jvm 里边运行php程序的包,解决了中文乱码问题. 注意使用UTF-8编码保存页面格式.resin下替换原版就可以了.其它jsp服务器比如tomcat,要script-10.jar 可以拷贝resin3.x里边的包.使用方法看resin帮助.

    quercus成就GAE上运行php项目

    Google app engine提供了虚拟服务器,但是目前只能支持python和java语言。php语言只有通过认证才可以使用,但是很难通过认证。本人做了一个通过quercus使php项目能运行到GAE上,这是简单的项目内容

    tomcat 环境下使用quercus运行php程序简单demo -登陆验证

    代码可以放在 tomcat 环境下运行(放到 tomcat 安装目录下启动 tomcat 即可),也可以用eclipse 打开,项目用 easyui 做前段框架,使用 php 做后台开发,请求用 的ajax,数据库使用 MySQL 5.6 。项目压缩包里包含 sql...

    quercus-4.0.37.war

    基于Java 的 PHP 框架 4.0.37 版本,解压后放入放入web服务器,在该目录下即可运行php,具体请自己找文档。

    借《浅谈PHP与Java之Web开发整合技术》说LAJP

    简单配置PHP与java集成的三项技术,这种资源网上很少

    quercus-4.0.39.war

    官方地址http://quercus.caucho.com/

    让gae支持php的方法

    GAE虽然支持java了,但不幸的是依然不支持php 但是我们可以使用基于java的Quercus基本上可以100%的支持PHP语言

    PHP with Java

    GAE 中运行PHP程序,只要你把 Quercus 集成到你的 GAE 中,你自然也可以运行PHP脚本了。

    quercus-4.0.39-src.jar

    script-api.jar、php-script.jar、JavaBridge.jar、php-servlet.jar四个jar包

    tomcat项目配置php所需jar

    &lt;servlet-name&gt;Quercus Servlet &lt;servlet-class&gt;com.caucho.quercus.servlet.QuercusServlet&lt;/servlet-class&gt; &lt;param-name&gt;license-directory &lt;param-value&gt;WEB-INF/licenses &lt;servlet-name&gt;Quercus ...

    论文研究 -

    Zeen橡树(Quercus faginea)是地中海西部特有的一种森林树种,在阿尔及利亚非常著名。 它是一棵落叶或半永久叶子的橡树。 栎(Quercus faginea)非常多态,特别是在叶片特性方面,因此在阿尔及利亚有两个亚种:栎...

    openfire-jappix:自动从code.google.compopenfire-jappix导出

    它使用嵌入在插件中的Quercus Java PHP引擎 无需BOSH服务器。 它使用Jetty Websockets或Openfire BOSH服务 要配置Jappix设置,请编辑/php/read-main.php和red-host.php 要使用jappix Mini,请编辑minichat.html ...

    云南保山上新统Quercus presenescens Z. K. Zhou角质层特征及古气候意义

    云南保山上新统Quercus presenescens Z. K. Zhou角质层特征及古气候意义,李娜,孙柏年,在云南保山上新统羊邑组发现了一栎属高山栎组植物压型化石—前灰背栎(Quercus presenescens Z. K. Zhou),并对其进行了宏观...

    quercus-dark:栎属的深色主题| 多伦多大学

    栎属黑暗 栎属的深色主题| 多伦多大学

    Quercus Robusta-开源

    Quercus Robusta是可重用的开源C ++应用程序框架。 它支持重新计数GC,灵活的多态容器,便携式多线程和GUI。

    porquebox:像 TorqueBox,但用于 PHP。 所以PorqueBox

    不过,Stock Quercus 有 ClassLoader 问题。 修补 Quercus 可以解决这个问题。 无论如何,Quercus 无法运行所有 Drupal 7,这是我感兴趣的主要应用程序。 当 Quercus 兼容时,我希望我希望它运行 Drupal 8。 路线图...

    resin-4.0.28

    resin-4.0.28 Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JAVA语言开发。

Global site tag (gtag.js) - Google Analytics