PHP 負責 Web 表現層,Java 負責資料存取與商務邏輯,透過 PHP Java Bridge(或 PHP 內建 Java 擴充套件)實現跨語言呼叫。
控制台 → 系統 DSN → 新增 Oracle 9i 驅動,名稱 photo,配置連線資訊。
package com.inberkong.util;
import java.sql.*;
public class DataBaseConnection {
public static Connection getConnection() {
Connection con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:photo", "photo", "inberkong");
} catch (Exception e) { e.printStackTrace(); }
return con;
}
}
編譯後置於 PHP Java 類別路徑(java.class.path 指定目錄)。
package com.inberkong.processBean;
import java.sql.*;
import com.inberkong.util.DataBaseConnection;
public class GetUserRolesArray {
private Connection con;
// ... 省略屬性宣告 ...
public GetUserRolesArray() {
try { this.con = DataBaseConnection.getConnection(); } catch (Exception e) {}
}
public String getUserRolesArray() throws Exception {
String sql = "SELECT ID, NAME FROM ADMIN WHERE STATE!=0 AND USERTYPE!='0' ORDER BY ID DESC";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
StringBuilder sb = new StringBuilder();
int i = 0;
while (rs.next()) {
String id = rs.getString("ID");
String name = rs.getString("NAME");
sb.append("\narr[").append(i).append("]=new BDSort('").append(id).append("','00','").append(name).append("','');");
i++;
// 子查詢:已分配角色
String sql3 = "SELECT ID, NAME FROM ROLE_MANAGE WHERE ID IN (SELECT ROLE_ID FROM USER_ROLE_LINK WHERE USER_ID=" + id + ") ORDER BY ID";
// ... 同理處理未分配角色 ...
}
return sb.toString();
}
// 建議實作 close() 釋放連線,finalize() 呼叫 close()
}
<?php
$javaObj = new Java("com.inberkong.processBean.GetUserRolesArray");
$jsArray = $javaObj->getUserRolesArray();
echo $jsArray; // 直接輸出 JS 程式碼供前端使用
?>
php.ini 啟用 extension=php_java.dll[Java] 區段設定 java.class.path 包含 php_java.jar 及自訂類別目錄JAVA_HOME、PATH 正確指向 JDK/JRE