`
叶落黄昏
  • 浏览: 17586 次
  • 性别: 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也能在...

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

    通过上述三种技术——SOAP、Quercus和PHP/JavaBridge,开发人员能够灵活地在PHP和Java之间搭建桥梁,实现跨语言的协同工作。每种技术都有其独特的优势和适用场景,选择合适的方案可以极大提升Web应用的开发效率和...

    quercus,java 里边运行php程序

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

    为php配置java环境

    这通常涉及到在PHP应用程序中调用Java代码,例如通过JavaBridge或使用像Quercus这样的PHP到Java的转换器。以下是对这个主题的详细阐述: 1. **PHP与Java交互** PHP是一种广泛使用的开源脚本语言,主要应用于Web...

    quercus-3.1.2

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

    quercus成就GAE上运行php项目

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

    技术经理决策参考-Java和PHP的协同开发方案

    这篇讨论主要聚焦于三种有效的协同开发方案:SOAP、php-java-bridge和Quercus,旨在帮助技术经理做出明智的决策。 首先,SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,设计用于跨平台、跨语言的...

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

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

    LAJP(Linux Apache Java Php) -- PHP结合JAVA的开发技术.zip

    PHP可以通过JavaBridge、Quercus等工具直接调用Java类库,实现两者的无缝集成。 6. **优点**:LAJP的优势在于结合了Java的强类型和企业级特性以及PHP的快速开发能力。Java处理后台服务,保证系统的稳定性和安全性,...

    PHP with Java

    这里,我们主要探讨的是使用Quercus,一个用Java实现的PHP解释器,使得PHP代码能够在Java平台上运行,包括GAE。 Quercus是由Caucho Technology开发的,它是一个高性能、全功能的PHP 5实现,完全用Java编写。它的...

    quercus-4.0.37.war

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

    tomcat支持php环境需要的jar包

    要让Tomcat处理PHP,我们需要一个中间件,例如`Quercus`或者`PHP-Java Bridge`,这两个都是允许Java和PHP之间交互的解决方案。 1. **Quercus**:这是一个完全用Java编写的PHP解释器,它可以被Tomcat直接识别和执行...

    JavaBridge.jar php-script.jar php-servlet.jar

    JavaBridge.jar、php-script.jar 和 php-servlet.jar 是在Apache Tomcat服务器上运行PHP应用程序的关键...此外,随着技术的发展,现在有更多如Quercus这样的解决方案,它们提供了更高效的方式在Java环境中运行PHP代码。

    php调用jar包依赖包

    4. 使用第三方库:有一些PHP库如Phalanger或Quercus,它们提供了在PHP中直接解释Java字节码的能力。这种方式可以直接引入Java的jar包,但是可能需要处理兼容性和性能问题。 在实际操作中,我们需要根据项目需求和...

    tomcat运行php所需jar

    要让Tomcat运行PHP,我们需要一个中间件,如Quercus(一个纯Java实现的PHP解释器)或通过JNI(Java Native Interface)来调用PHP-CGI。 2. **Quercus**:Quercus是由Caucho Technology开发的一个开源项目,它允许在...

    让gae支持php的方法

    描述中提到的"基于java的Quercus"是一个关键的解决方案,它是一个兼容PHP的Java实现,可以让我们在不直接支持PHP的GAE上运行PHP代码。 Quercus是由Caucho Technology开发的一个高性能的PHP解释器,它完全用Java编写...

    tomcat支持php运行

    最常见的解决方案是使用`JPHP`或`Quercus`(一个纯Java实现的PHP解释器)。这些工具允许你在Java环境中执行PHP代码。 2. **配置Tomcat**:安装桥接器后,你需要对Tomcat进行配置。这可能包括编辑`server.xml`文件,...

    tomcat+php 所需jar包

    Quercus允许PHP代码直接在Java虚拟机(JVM)中运行,而mod_proxy则可以将HTTP请求路由到Tomcat,使得PHP可以与Apache一起工作。 4. **jar包**:在Java世界中,jar(Java Archive)文件是一种归档格式,用于收集多个...

Global site tag (gtag.js) - Google Analytics