Jump to content
Aplicatiile pentru functia de "Helper" pentru serverul de Minecraft sunt deschise !

[Php] Interoperabilitate Php-Java


Guest dizzy

Recommended Posts

Un aspect important al limbajului PHP este acela că realizatorii de pagini web pot folosi în script-uri o mare parte a facilităţilor oferite de limbajul Java prin intermediul unei biblioteci de funcţii numită php_java. Pentru a utiliza facilităţile oferite de limbajul Java în cadrul script-urilor PHP este necesară o platformă Java care poate fi găsită la adresa http://java.sun.com/ şi pachetul php_java care conţine două fişiere: biblioteca php_java.dll (pe platforme Windows) şi pachetul php_java.jar care conţine o clasă care se ocupă de încărcarea celor folosite în script-urile PHP. Această clasă este utilizată de către PHP pentru a executa funcţii din clase Java şi pentru a rula clase noi. Limbajul PHP poate utiliza cel puţin următoarele versiuni de Java: 1.2.x, 1.3.x, 1.4.2. Eu am testat cu Java 2 SDK, Standard Edition 1.4.2_04

Cele două fişiere ale pachetului php_java pot fi găsite în versiunea integrală a limbajului PHP (în directorul php/extensions/ de pe hdd)

Instalare:

Pentru a utiliza această facilitate trebuie instalată platforma Java şi cele două fişiere ale pachetului php_java trebuie copiate în directorul extensions care poate fi găsit în directorul în care a fost instalat limbajul PHP.

Configurare:

Pentru a putea accesa clasele Java în cadrul script-urilor PHP trebuie configurată biblioteca php_java. Configurarea se realizează prin intermediul fişierului php.ini localizat pe platforme Windows în directorul sistemului de operare (în directorul Windows de obicei). În acest fişier trebuie adăugată valoarea php_java.dll variabilei extension. Există mai multe posibilităţi pentru a face acest lucru. Una dintre ele este eliminarea caracterului ";" de la începutul liniei:

;extension=php_java.dll

dacă o astfel de linie există în fişierul php.ini, iar o altă varianta este adăugarea liniei:

extension=php_java.dll

la sfârşitul fişierului. În continuare trebuie setate valori pentru următoarele patru variabile:

- java.class.path - reprezintă o listă de directoare, arhive zip sau alte tipuri de pachete suportate de limbajul java (jar, ejb, war etc.) separate între ele prin caracterul ";" această listă ar trebui să conţină calea către pachetul php_java.jar, altfel nu se pot utiliza clase Java;

- java.home - reprezintă numele directorului în care este instalată platforma Java;

- java.library - reprezintă calea către maşina virtuală Java care se doreşte a fi încărcată;

-java.library.path - reprezintă o listă de directoare în care pot fi găsite anumite pachete de clase Java, în plus decât cele cu care este configurată platforma Java; directoarele din această listă sunt separate între ele prin caracterul ";"

Valorile pentru aceste variabile se setează în fişierul php.ini în cadrul secţiunii [Java].

în cazul meu am setat astfel valorile:

[Java]

java.class.path=c:\php\extensions\php_java.jar

java.home=c:\j2sdk1.4.2_04

java.library=C:\j2sdk1.4.2_04\jre\bin\server\jvm.dll

java.library.path=c:\php\extensions\

Cu aceste setări făcute, maşina virtuală Java poate fi încărcată şi clasele pot fi utilizate în cadrul script-urilor PHP.

Utilizare

Clasele Java se instanţiază în PHP folosind constructorul clasei Java explicat mai jos. Metodele şi proprietăţile statice sau dinamice ale claselor instanţiate se accesează folosind operatorul de indirectare "->". De exemplu, dacă avem o variabilă $clasa căreia i-a fost ataşată ca valoare o clasă Java, atunci pentru a afişa reprezentarea textuală a acesteia trebuie să utilizăm metoda toString() (metodă specifică tuturor claselor Java) vom utiliza o instrucţiune de forma:

echo $clasa->toString();

Clasa Java

Această clasă se foloseşte pentru a rula o clasă a limbajului Java şi reprezintă, de fapt, o clasă derivată din clasa java.lang.Object a limbajului Java. Constructorul acesteia primeşte mai mulţi parametri, dintre care primul este un şir de caractere care reprezintă numele clasei Java care se instanţiază, iar restul de parametri reprezintă parametrii pentru care se va apela constructorul clasei respective. În cazul în care nu se reuşeşte rularea unei clase a limbajului Java este generată o excepţie Java, iar pentru a verifica dacă a fost generată o astfel de excepţie se foloseşte funcţia java_last_exception_get care este prezentată mai jos. În continuare este un exemplu de utilizare a clasei Java, cu care puteţi verifica dacă aţi instalat şi configurat corect clasele Java.

Cod:

<?php

$system = new Java("java.lang.System");

echo "Versiunea Java este: ";

echo $system -> getProperty("java.version")."<br>";

echo "Sistem de operare: ";

echo $system -> getProperty("os.name")."<br>";

echo "Versiunea: ";

echo $system -> getProperty("os.version")."<br>";

?>

Funcţia java_last_exception_get

Această funcţie returnează o clasă Java derivată din clasa java.lang.Exception care reprezintă ultima excepţie care a fost generată sau valoarea logică false dacă nu a fost generată nici o excepţie de la începutul execuţiei script-ului sau de la ultimul apel al funcţiei java_last_exception_clear. Funcţia java_last_exception_get nu are parametri.

Cod:

<form action = "test.php" metod=post>

Introduceti un sir de caractere:

<input type = text name = "sir">

<input type = submit value = "verificare">

</form>

<?php

if (isset($_POST['sir'])) {

echo "<hr>";

$int = new Java ("java.lang.Integer");

$sir = $_POST['sir'];

$i = $int->parseInt($sir);

$error = java_last_exception_get();

if ($error) {

echo "Sirul \"".$sir."\" nu este un numar intreg.";

java_last_exception_clear();

}

else {

echo "Sirul \"".$i."\" este un numar intreg.";

}

}

?>

Funcţia java_last_exception_clear

Această funcţie nu are nici un parametru şi nu returnează nici o valoare, în schimb efectul aplicării ei este acela că este anulată ultima excepţie Java care a fost generată de către maşina virtuală Java în timpul executării de cod. Apelul acestei funcţii este necesar, deoarece, în cazul în care a fost generată o excepţie şi nu a fost tratată, se poate întâmpla ca după apelul unei funcţii să tratăm excepţia greşită.

Importanţa librăriei php_java

Pentru programatorii de pagini web care cunosc atât limbajul Java, cât şi limbajul PHP, prezenţa acestei librării are o foarte mare importanţă. Funcţiile scrise în Java sunt executate de către procesor mult mai repede decât cele scrise în PHP, iar utilizarea codului Java oferă o mai mare siguranţă creatorilor de pagini web dinamice.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...