Session sharing with php and java
------------------------------------------
<?php require_once("java/Java.inc");
$session = java_session();
?>
<HTML>
<TITLE>PHP and JSP session sharing</title>
<BODY>
<?php
if(is_null(java_values($session->get("counter")))) {
$session->put("counter", 1);
}
$counter = java_values($session->get("counter"));
print "HttpSession variable \"counter\": $counter<br>\n";
$session->put("counter", $counter+1);
?>
<a href="sessionSharing.jsp">JSP page</a>
</BODY>
</HTML>
Uso básico
Ejemplo #1 Ejemplo de Java
<?php
// obtener una instancia de la clase de Java java.lang.System en PHP
$system = new Java('java.lang.System');
// demostrar el acceso a las propiedades
echo 'Versión de Java=' . $system->getProperty('java.version') . '<br />';
echo 'Vendedor de Java=' . $system->getProperty('java.vendor') . '<br />';
echo 'SO=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';
// ejemplo de java.util.Date
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
echo $formatter->format(new Java('java.util.Date'));
?>
Ejemplo #2 Ejemplo de AWT
<?php
// Este ejemplo sólo está pensado para ejecutarse usando CLI.
$frame = new Java('java.awt.Frame', 'PHP');
$button = new Java('java.awt.Button', '¡Hola Mundo Java!');
$frame->add('North', $button);
$frame->validate();
$frame->pack();
$frame->visible = True;
$thread = new Java('java.lang.Thread');
$thread->sleep(10000);
$frame->dispose();
?>
- new Java() creará una instancia de una clase si está disponible un constructor apropiado. Si no se pasan parámetros y el constructor predeterminado es útil ya que proporciona acceso a clases como java.lang.System la cuál expone la mayoría de sus funcionalidades a través de métodos estáticos.
- Al acceder a un miembro de una instancia se mirará primero por propiedades bean y después por campos públicos. En otras palabras, print $date.time primero intentará ser resuelto como $date.getTime(), después como $date.time.
- Los miembros estáticos y las instancias se pueden acceder en un objeto con la misma sintaxis. Además, si el objeto java es del tipo java.lang.Class, se puede acceder a los miembros estáticos de la clase (campos y métodos).
-
El lanzamiento de excepciones resulta en advertencias en PHP, y resultados
NULL. Las advertencias se pueden eliminar prefijando la llamada al método con un signo "@". Las siguientes API se pueden usar para recuperar y reiniciar el último error: - La resolución de sobrecarga es, en general, un problema grave dadas las diferencias de tipos entre dos lenguajes. La extensión Java de PHP emplea una sencilla, pero muy efectiva, métrica para determinar qué sobrecarga es la que mejor coincide. Además, los nombres de los métodos en PHP no son sensibles a mayúsculas-minúsculas, incrementando potencialmente el número de sobrecargas a seleccionar. Una vez que un método es seleccionado, los parámetros son coaccionados si es necesario, posiblemente con una pérdida de infomarción (ejemplo: los números de coma flotante de precisión doble serán convertidos a booleanos).
- En la tradición de PHP, las matrices y tablas hash se pueden usar intercambiablemente. Observe que las tablas hash en PHP sólo pueden ser indexadas por enteros o cadenas; y que las matrices de tipos primitivos en Java no se puede interpolar. También observe que estos constructores son pasados por valor, por lo que puede ser caro en términos de memoria y tiempo.
anto dot justus at gmail dot com ¶
3 years ago
anto dot justus at gmail dot com ¶
3 years ago
php java
The PHP code here is simple and straight forward. It is not
OOP. But you probably got enough of that while doing the
Java code.
<?php
java_require("F:\\wamp5\\www\\classes\\");
$obj = new Java("hello");
// Call the "sayHello()" method
$output = $obj->SayHello();
echo $output.' this text in PHP
'; // Displays (so this comes from the class!)
// Call the "SayNumber()" method
$output = $obj->SayNumber();
// Displays (so this comes from the class!)
echo $output.' is a lucky number';
//Because the JVM caches everything we want reset while
playing with the code. Otherwise the
// a cached version of the same class file will be used
rather than the new one
echo "
Resetting back-end to initial state\n";
// suppress the warning message from the use of reset.
@java_reset();
?>
That's it. Now browse to the PHP page and you should get
the results shown below.
