⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.xtp

📁 RESIN 3.2 最新源码
💻 XTP
字号:
<document>  <header>    <title>Quercus: Java and PHP integration</title>        <description>          <p>Adding PHP functions with a Java module.</p>        </description>    <type>tutorial</type>    <tutorial-startpage>hello.php</tutorial-startpage>  </header>  <body>    <localtoc/>    <summary/><s1 title="Files in this tutorial"><deftable><tr>  <td><viewfile-link file="hello.php"/></td>  <td>The PHP Hello, World</td></tr><tr>  <td><viewfile-link file="WEB-INF/classes/example/HelloModule.java"/></td>  <td>The Java module definition</td></tr><tr>  <td><viewfile-link file="WEB-INF/resin-web.xml"/></td>  <td>web.xml configuration</td></tr><tr>  <td><viewfile-link file="WEB-INF/classes/META-INF/services/com.caucho.quercus.QuercusModule"/></td>  <td>Adding the module</td></tr></deftable></s1><s1 title="Introduction"><p>This article shows how to use Quercus, Resin's PHP implementation,to create a module in Java callable from a PHP page.</p><!--[[PHP Hello World Module (jar version)]] explains how a module is meant to be used within your PHP code, so I won't repeat that information here.  Instead, this article will focus on the steps necessary to create and use a module without having to "jar up" your files.--><p>For purposes of this article, I assume that you are working withResin 3.2.0 with the home directory at C:\resin-3.2.0. I will call thisdirectory <code>$webApp</code>.</p></s1><s1 title="Step 1: Create resin-web.xml and place it in $webApp/WEB-INF"><example title="resin-web.xml">&lt;web-app xmlns="http://caucho.com/ns/resin"&gt;   &lt;servlet servlet-name="resin-php"               servlet-class="com.caucho.quercus.servlet.QuercusServlet"/&gt;    &lt;servlet-mapping url-pattern="*.php" servlet-name="resin-php"/&gt;	   &lt;/web-app&gt;</example></s1><s1 title="Step 2: Create HelloModule.java and place it in $webApp/WEB-INF/classes/example"><example title="HelloModule.java">package example; import com.caucho.quercus.module.AbstractQuercusModule; public class HelloModule extends AbstractQuercusModule {   /*   ** Notice the careful use of the naming   ** convention hello_test.  This is done   ** in order to prevent name collisions   ** among different libraries.   */   public String hello_test(String name)   {     return "Hello, " + name;   }}</example></s1><s1 title="Step 3: Create com.caucho.quercus.QuercusModule and place it in $webApp/WEB-INF/classes/META-INF/services"><example title="com.caucho.quercus.QuercusModule">example.HelloModule</example></s1><s1 title="Step 4: Create hello.php and place it in webapps/ROOT"><example title="hello.php">&lt;?php echo hello_test("World") ?&gt;</example><p>In your favorite browser, type:</p><example> http://localhost:8080/hello.php</example><p>You should see:</p><results> Hello, World</results></s1><s1 title="Advanced Users"><p>The first argument of a Java function may be the <code>Env</code>.The <code>Env</code> provides access to Quercus resources like printingto the browser and retrieving a PHP ini value.  For the API of<code>Env</code>, refer to the Quercus javadoc.</p><example>package example;import com.caucho.quercus.env.Env;import com.caucho.quercus.module.AbstractQuercusModule; public class HelloModule extends AbstractQuercusModule {   /*   ** Notice the careful use of the naming   ** convention hello_test.  This is done   ** in order to prevent name collisions   ** among different libraries.   **   ** @param env provides access to Quercus environment resources   ** @param name   */   public String hello_test(Env env, String name)   {     env.println("inside HelloModule  hello_test()");     return "Hello, " + name;   }}</example><p>Now <code>hello_test</code> will print "inside HelloModule hello_test()"to the browser before returning.</p></s1><s1 title="Java Function Arguments/Return Marshaling"><p>Quercus does marshaling to and from Quercus Values and Java objects.If a Java function requires a String, Quercus will automatically convertthe internal Quercus StringValue to a String.  If a Java function returnsan <code>int</code>, Quercus will create a Quercus LongValue for it.</p><p>For other Java Objects like <code>java.util.Date</code> that are returnedto PHP, Quercus puts them into wrappers to expose their public methods andmembers to the PHP script.  Java Collection, List, and Map instances havethe additional ability to be used within a PHP script like any other PHParray.</p><p>For more information, see<a href="../../doc/quercus-java-integration.xtp">Java Interface</a>.</p></s1><s1 title="Conclusion"><p>It is fairly straight forward to create your own modules callable fromwithin a Quercus/PHP page.  The above tutorial takes through the stepsto create the simple hello world application (without needingto "jar-up" your files).</p><p>If you want to change your module in any way, all you have to do isresave the ".java" file in the classes\example directory, and Resinwill recompile it for you.</p><p>You do not need to restart your web app or Resin.  It's just that simple.</p></s1>  </body></document>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -