Il y a deux moyens de connecter PHP et Java : soit en intégrant PHP dans un environnement de Servlet Java, ce qui est la solution la plus stable et la plus efficace, soit en intégrant Java directement dans PHP. La première solution est fournie par le module SAPI qui s'interface avec un serveur de Servlet, la dernière par cette extension.
L'extension Java fournit un moyen simple et efficace pour créer et invoquer des méthodes d'un objet Java depuis PHP. La JVM est créée avec JNI, et tout fonctionne en intra-processus.
Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez ce module à vos risques et périls.
Vous avez besoin d'une Machine virtuelle Java installée sur votre machine pour utiliser cette extension.
Cette extension » PECL n'est pas intégrée à PHP.
En PHP 4, les sources de cette extension PECL peuvent être trouvées dans le dossier ext/ avec les sources de PHP ou sur le lien PECL ci-dessous. Si vous voulez utiliser ces fonctions, vous devez compiler PHP avec le support Java en utilisant l'option de configuration --with-java[=DIR] où DIR représente le dossier d'installation de base de votre JDK. Cette extension ne peut être compiler qu'en tant qu'extension partagée. Les extensions compilées additionnellement peuvent être trouvées dans php-src/ext/java/README.
Les utilisateurs de Windows doivent activer la bibliothèque php_java.dll dans le php.ini pour pouvoir utiliser ces fonctions. En PHP 4, cette bibliothèque DLL se trouve dans le dossier extensions/ avec les binaires PHP pour Windows téléchargées. La bibliothèque DLL pour cette extension PECL peut être téléchargée depuis, soit la page de » téléchargement PHP, soit depuis » http://pecl4win.php.net/
Note: Pour activer ce module dans un environnement Windows avec PHP <= 4.0.6, vous devez rendre la bibliothèque jvm.dll disponible pour votre PATH système. Aucune autre bibliothèque DLL n'est nécessaire pour les version de PHP > 4.0.6.
Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Nom | Par défaut | Modifiable | Historique |
---|---|---|---|
java.class.path | NULL | PHP_INI_ALL | |
java.home | NULL | PHP_INI_ALL | |
java.library.path | NULL | PHP_INI_ALL | |
java.library | JAVALIB | PHP_INI_ALL |
Cette extension ne définit aucune ressource.
Cette extension ne définit aucune constante.
Example#1 Exemple avec Java
<?php
// créer une instance de la classe Java java.lang.System dans PHP
$system = new Java('java.lang.System');
// accède aux propriétés
echo 'Java version=' . $system->getProperty('java.version') . ' <br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . '<br />';
// Exemple avec java.util.Date
$formater = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
echo $formater->format(new Java('java.util.Date'));
?>
Example#2 Exemple AWT
<?php
// Cet exemple ne fonctionne qu'en mode CGI.
$frame = new Java('java.awt.Frame', 'PHP');
$button = new Java('java.awt.Button', 'Hello Java World!');
$frame->add('North', $button);
$frame->validate();
$frame->pack();
$frame->visible = True;
$thread = new Java('java.lang.Thread');
$thread->sleep(10000);
$frame->dispose();
?>
Les exceptions sont transformées en alertes PHP, et résultat NULL. Les alertes peuvent être supprimées en préfixant l'appel par l'opérateur >. Les fonctions suivantes peuvent être utilisées pour lire et effacer la dernière erreur remontée :
L'interface PHP 4 sapi/servlet est construite sur un mécanisme défini par l'extension Java, qui permet à PHP d'être exécuté comme une servlet. L'avantage immédiat d'un point de vue PHP est que les serveurs web qui supportent les servlets gèrent rigoureusement les machines virtuelles. Les instructions d'installation du module Servlet SAPI sont disponibles dans le fichier php4/sapi/README. Notes :