<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>PHPTeam v3 : Le PHP Professionel </title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="description" content="Site traitant du PHP pour les professionels (php et flash, mysql, postgresql, pear,...)"> <meta name="Keywords" content="php, professionel, formation, forum, flash, php, pear, mysql"> <link rel="stylesheet" href="./css.css" type="text/css"> <LINK REL="SHORTCUT ICON" href="http://www.phpteam.net/favicon.ico"> <script language="JavaScript"><!-- function commentaire(nom) 	{ 	window.open('commentaire.php3?nom='+nom,'Commentaires','toolbar=0,location=0,directories=0,menuBar=0,resizable=0,scrollbars=yes,width=317,height=355,left=75,top=60'); 	}  function pupop(url) { 	var args = "width=584,height=410,toolbar=no, menubar=no, location=no, scrollbars=yes,resizable=yes"; 	var popup = window.open("", "", args); 	popup.self.location = url; }  self.name = "main_kaptive"; function popupp(adresse,nom){         var args = "width=770,height=550,toolbar=no,menubar=no,location=no,scrollbars=no,resize=no";         var popup = window.open("", nom, args);         popup.self.location = adresse; } --> 	</script> </head> <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <center>  <table width="778" border="0" cellspacing="0" cellpadding="0">     <tr>     <td>         <table width="100%" border="0" cellspacing="0" cellpadding="0">           <tr>             <td><a href="http://www.phpteam.net"><img src="./img/header_h.gif" border=0 width="778" height="47"><br>               <img src="./img/header_m_1.gif" width="290" height="60" border=0></a><a href="http://vpontier.free.fr"><img src="./pub/elroubio_ban.gif" width="468" height="60" border="0"></a><img src="./img/header_m_3.gif" width="20" height="60"><br>               <table width="100%" border="0" cellspacing="0" cellpadding="0" background="./img/header_b.gif" height="28">                 <tr>                   <td><img src="./img/trans.gif" width="188" height="28"></td>                 </tr>               </table>             </td>           </tr>         </table><table width="100%" border="0" cellspacing="0" cellpadding="0" background="img/fond_central.gif">           		<tr>       <td>               <table width="100%" border="0" cellspacing="0" cellpadding="5" background="./img/trans.gif">                 <tr>                   <td width="130" valign="top"> <br>                       <center><img src="./img/menu_item_haut.gif" width="124" height="24"></center>                     &nbsp;&nbsp;&nbsp;<a href="./index.php"><span class=texte1>Accueil<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./apprendre.php "><span class=texte1>Apprendre<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./articles.php "><span class=texte1><b>Progresser-Articles</b><br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./forum2/phpBB2"><span class=texte1><b>Forums</b><br></span></a>                    <!--&nbsp;&nbsp;&nbsp;<a href="./tests.php"><span class=texte1>Tests &amp; Scripts<br></span></a>-->                     &nbsp;&nbsp;&nbsp;<a href="./librairies.php"><span class=texte1>Librairies<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./outils.php"><span class=texte1>Outils<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./annuaire/"><span class=texte1>Sites (Liens)<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./ming.php"><span class=texte1><b>PHP/Flash</b><br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./news_net.php"><span class=texte1>News du Net<br></span></a>                       <center><img src="./img/menu_item_bas.gif" width="119" height="16"></center>                     <br>                     <center><img src="./img/menu_item_haut.gif" width="124" height="24"></center>                     &nbsp;&nbsp;&nbsp;<a href="./atouts.php"><span class=texte1>Les atouts du PHP<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./annuaire_entreprises.php"><span class=texte1>Annuaire pro<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./salon_php.php"><span class=texte1>Salon PHP 2001<br></span></a>                     &nbsp;&nbsp;&nbsp;<a href="./salon_php2002.php"><span class=texte1><b>Salon PHP 2002</b><br></span></a>                     <center>                       <img src="./img/menu_item_bas.gif" width="119" height="16"><br>                       <br>                     <img src="./img/menu_item_haut.gif" width="124" height="24">                       </center>                         &nbsp;&nbsp;&nbsp;<a href="./affiche.php?quoi=contact"><span class=texte1>L'equipe<br></span></a>                         &nbsp;&nbsp;&nbsp;<a href="./contact.php"><span class=texte1>Contact<br></span></a>                         &nbsp;&nbsp;&nbsp;<a href="./pub.php"><span class=texte1>Publicit&eacute;<br></span></a>                       <center>                         <img src="./img/menu_item_bas.gif" width="119" height="16">                       </center>                     </center>                    </td><td width="668" valign="top">                      <table width="100%" border="1" cellspacing="0" cellpadding="5" align="center" bordercolor="#000000">                       <tr>                         <td valign="top"> <a href="./articles.php"><img src="img/item_article.gif" width="126" height="43" border=0></a><br>                             <span class="texte1"><table width="100%" border="1" cellspacing="0" cellpadding="0">   <tr>      <td width="13%"> <!--<script src= "http://dev.nexen.net/docs/php/annotee/quickref.js"></script>--> <img src='./img/phpteam_logo.gif'>		</td>     <td width="54%"><p class=titre_article>Interactions PHP/Java</p></td>     <td width="33%">       <a href='./affiche.php?quoi=javaphp'><span class=texte1><img src='./img/carre.gif' width=5 border=0 align=middle>Introduction</span></a><br>      <a href='./affiche.php?quoi=javaphp2'><span class=texte1><img src='./img/carre.gif' width=5 border=0 align=middle>Instal - Exemples</span></a><br><br>      <font size="2"> <img src='./images/print.gif' width=15 height=11 border=0><a href='affiche.php?quoi=javaphp&print=1'> format imprimable </a>			</font>     </td>   </tr> </table> <br> <table border=0 width=100%> 	<tr class=titre_article> 		Introduction 	</tr> 	<tr class=table_texte><br> 			Le but de notre recherche est de dfinir les possibilits d'interactions entre ces deux langages fondamentalement 			diffrents que sont le PHP et le Java. Dans un premier temps, nous mettrons en vidence les spcifications de 			chacun de ces langages, puis nous exposerons les diffrentes manires de  les faire interagir. 	</tr> 	<tr><br> La recherche se fera toujours dans les deux sens :<br> *	Interactions PHP dans Java,<br> *	Interactions Java dans PHP.<br> <br> Recherche d'utilisation de fonctions, de passage de donnes (variables, objets) d'un langage  l'autre et de<br> nombreuses autres fonctionnalits.<br> <br> Recherche sur la manire de faire du PHP un langage objet :<br> *	Dfinition et utilisation de classes en PHP<br> *	Utilisation d'un langage objet externe : Java<br> <br> Recherche sur la manire d'utiliser une base de donnes en Java  l'aide des fonctions PHP. <br><br> <b>PREMIERE INTERACTION :</b><br> <br> La premire interaction consiste  utiliser des variables provenant du code PHP, et les utilises dans celui du Java. Pour, il n'est pas ncessaire d'utiliser ou de configurer une autre librairie, il suffit d'utiliser les fonctions de bases.<br> <br> <b>1	L'intrt de cette interaction :</b><br> <br> L'intrt est de pouvoir envoyer des variables provenant du HTML, ou PHP. Par exemple, avant une application<br> Java, on peut choisir certains paramtres, comme une couleur, une valeur numrique, ... ou mme un nom<br> ( ou login),  ceci permettrait de personnaliser l'applet Java. De plus, si le code PHP est relier  une base<br> de donnes, tous les paramtres de personnalisation de chaque personne serait stock dans cette base de donnes,<br> et ainsi l'applet serait entirement personnelle.<br> <br> <b>2	La partie du code : PHP</b><br> <br> La variable PHP (ou plusieurs) est passe en paramtre dans l'applet Java grce  la balise &lt;APPLET&gt;. Par<br> contre,  chaque fois que cette variable est change, soit l'applet se rinitialise, soit l'applet ne la prend pas<br> en compte, donc cette interaction est  utiliser uniquement pour paramtrer l'applet Java au dmarrage.<br> <br> <table  width=100% ><tr class=table_code> 		<td> <code><font color="#000000"> &lt;APPLET CODEBASE = "." <br />&nbsp;&nbsp;&nbsp;&nbsp;CODE = "essai.Applet1.class"<br />&nbsp;&nbsp;&nbsp;&nbsp;NAME = "AppletTest"<br />...&gt;<br />&lt;param name="Ma_variable_en_java" VALUE="<font color="#0000CC">&lt;?</font><font color="#006600">echo&nbsp;</font><font color="#0000CC">$Ma_variable_en_PHP</font><font color="#006600">;</font><font color="#0000CC">?&gt;</font>"&gt;<br />&lt;/APPLET&gt;</font> </code>		</td> 	</tr> </table> <br> <b>3	La partie du code : Java</b><br> <br> Du cot Java, il suffit de rcuprer la variable passe en paramtre, grce  une fonction. Pour ne pas faire<br> d'appel inutile  cette fonction, il vaut mieux stocker la valeur dans une variable.<br> <br> /* Cette fonction recupre la valeur de la variable " Ma_variable_en_java " place dans le code PHP */<br>     getParameter("Ma_variable_en_java");<br> <br> <b>LE MODULE JAVA INCORPORE DANS PHP4 :</b><br> <br> <b>1	PHP4 intgre Java :</b><br> <br> Depuis sa version 4, PHP supporte l'interaction avec Java. Ce support natif de Java fournit un moyen simple et<br> efficace pour crer et appeler des mthodes sur des objets Java depuis PHP. Mme si PHP4 intgre la<br> programmation objet, l'accs  la technologie Java apporte beaucoup (Autres fonctionnalits, nouvelles<br> librairies, ...). <br> <br> <table width=100%><tr class=table_code> 		<td> 		 <code><font color="#000000"> class nom_de_la_classe_java<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;.<br />}</font> </code></td></tr></table>  <br> Les classes sont un type de variable. Pour crer une variable du type dsir, il faut utiliser l'oprateur new.<br> <br>  <table width=100%><tr class=table_code><td> <code><font color="#000000"> <font color="#0000CC">&lt;?<br />&nbsp;&nbsp;&nbsp;&nbsp;$var_de_travail&nbsp;</font><font color="#006600">=&nbsp;new&nbsp;</font><font color="#0000CC">nom_de_la_classe</font><font color="#006600">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000CC">$var_de_travail&nbsp;</font><font color="#006600">-&gt;</font><font color="#0000CC">f1</font><font color="#006600">(</font><font color="#CC0000">"valeur"</font><font color="#006600">);<br /></font><font color="#0000CC">?&gt;</font> </font> </code></td></tr></table> La manipulation des classes est donc fort similaire au C++ ou au Java.<br> <br> Pour ceux qui veulent utiliser des classes crites en JAVA, l'instanciation d'objet se fait de la manire suivante :<br> <table width=100%><tr class=table_code><td> <code><font color="#000000"> <font color="#0000CC">&lt;?<br />$nom_objet&nbsp;</font><font color="#006600">=&nbsp;new&nbsp;</font><font color="#0000CC">Java</font><font color="#006600">(</font><font color="#CC0000">"nom_de_la_classe_en_JAVA"</font><font color="#006600">);<br /></font><font color="#0000CC">$nom_objet</font><font color="#006600">-&gt;</font><font color="#0000CC">nom_du_champ&nbsp;</font><font color="#006600">=&nbsp;</font><font color="#0000CC">valeur</font><font color="#006600">;<br /></font><font color="#0000CC">?&gt;</font> </font> </code></td></tr></table> <br> <b>2	Quelques remarques concernant l'intgration JAVA en PHP</b><br> <br> <ul> 	<li> 		new Java() cre une nouvelle instance d'une classe, si un constructeur valable est disponible. Si aucun 		paramtre n'est pass, et le constructeur par dfaut est utile pour accder  ces classes telles que 		"java.lang.System", qui fournissent leur fonctionnalits via des mthodes statiques. 	<br><br> 	<li> 		Lors de l'accs aux membres d'une instance, PHP commencera par rechercher les membres Bean, puis les 		champs publics. En d'autres termes, "print $date.time" sera d'abord rsolu par "$date.getTime()",puis par "$date.time"; 	<br><br> 	<li> 		Les membres statiques et d'instance sont accessibles avec la mme syntaxe. De plus, si un objet est de type "java.lang.Class", les membres statiques de la classe (champs et mthodes) sont accessibles. 	<br><br> 	<li> 		Les exceptions sont transformes en alertes PHP, et rsultat NULL. Les alertes peuvent tre supprimes en prfixant l'appel par l'oprateur "&gt;". Les fonctions suivantes peuvent tre utilises pour lire et effacer la dernire erreur remonte :  	<br><br> 	<ul> 		<li>java_last_exception_get() 		<li>java_last_exception_clear() 	</ul> 	<br> 	<li> 		Les surchargements de fonctions sont des problmes pineux, tant donn les diffrences de type de valeurs entre les deux langages. L'extension Java de PHP utilise une mtrique simple mais efficace pour dterminer la meilleur fonction  utiliser.  		De plus, les noms de mthodes ne sont pas sensibles  la casse en PHP, ce qui augmente le nombre de conflits potentiels.  		Une fois qu'une mthode est slectionne, les paramtres sont transtyps, avec une perte d'information potentielle non ngligeable (par exemple, les nombres  virgules flottante en double prcisions seront convertis en boolen).  	<br><br> 	<li> 		Traditionnellement en PHP, les tableaux et les tables de hashage peuvent tre inter changes, et fonctionnent de la mme faon. Notez que les tables de hashage de PHP ne peuvent tre indexes qu'avec des entiers ou des chanes, et que le type primitif de tableau de Java ne peut comporter de trous dans les index. Notez aussi que les valeurs sont passes par valeur, ce qui peut tre coteux en mmoire et en temps.  	<br><br> 	<li> 		L'interface PHP4 sapi/servlet est construite sur un mcanisme dfini par l'extension Java, qui permet  PHP d'tre excut comme une servlet. L'avantage immdiat d'un point de vue PHP est que les serveurs web qui supportent les servlets grent rigoureusement les machines virtuelles. Les instructions d'installation du module Servlet SAPI sont disponibles dans le fichier php4/sapi/README. Notes:  	<br><br> 	<li> 		Bien que ce code soit prvu pour fonctionner sur n'importe quel serveur  Servlet, il n'a t test qu'avec le module Apache Jakarta/tomcat (jusqu' aujourd'hui). Les remontes de bugs, les russites et les patches ncessaires pour faire fonctionner ce code sur d'autres serveurs sont fortement encourags!  	<br><br> 	<li> 		PHP a l'habitude de changer le dossier de travail. Le serveur SAPI/Servlet le changera  nouveau, mais tant que PHP fonctionnera, le moteur de servlet ne pourra pas charger de classes dans le CLASSPATH, si le dossier est spcifi avec un chemin relatif, ou ne pourra pas trouver le dossier d'administration et de compilation des tches JSP.  </ul> <a href="http://www.phpteam.net/affiche.php?quoi=javaphp2"><img src="images/suite.gif" border=0></a>  </td>                       </tr>                     </table>                   </td>                 </tr>               </table>             </td>           </tr>         </table>      <table width="100%" border="0" cellspacing="0" cellpadding="0" height="20">           <tr>              <td background="./img/footer.gif">                      <center><font color="#FFFFFF"><b><font size="2" face="Arial, Helvetica, sans-serif">                     Copyright &copy; [<a href="http://www.anaska.com" target="_blank"><font color="#FFFFFF">Anaska Formation PHP</font></a>] 2000-2003 -<a href="./pub.php"><font color="#FFFFFF"> Publicit&eacute;</font> </a>- <a href="./contact.php">                       <font color="#FFFFFF">Contact -</font></a></font></b></font></center>             </td>           </tr>         </table>       </td>   </tr> </table> </center> </body> </html> 
