本文目录导读:

- PHP-GTK(最传统但已过时)
- PHP-UI(现代方案)
- 使用 WebView 混合方案(最实用)
- 使用 Desktop 原生工具
- 使用 Electron 的 PHP 包装(混合方案)
- TSF(第三方库)
- 推荐方案对比
- 最佳实践建议
在 PHP 中做 GUI 开发有一些选项,但都不像其他语言那么成熟,这里给你介绍几种主要方案:
PHP-GTK(最传统但已过时)
最经典的 PHP GUI 方案,但现在基本不维护了。
<?php
// 简单示例
$window = new GtkWindow();
$window->set_title('Hello World');
$window->set_default_size(300, 200);
$label = new GtkLabel('Hello, GUI!');
$window->add($label);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$window->show_all();
Gtk::main();
?>
安装:
# 注意:PHP-GTK 仅支持 PHP 8.0-8.2,且需编译安装 # 不太推荐,已经过时
PHP-UI(现代方案)
使用 PHP 扩展包装了跨平台的 UI 库(libui)。
<?php
$application = new UI\Window('我的应用', 800, 600, true);
$button = new UI\Controls\Button('点击我');
$button->onClick(function() {
echo "按钮被点击了!\n";
});
$application->add($button);
$application->show();
UI\run();
?>
安装:
# Linux/Ubuntu sudo apt install php-dev libgtk-3-dev pecl install ui echo "extension=ui.so" >> /etc/php/8.2/cli/php.ini
使用 WebView 混合方案(最实用)
利用 PHP 内置服务器 + HTML/JS 做界面,这是目前比较实用的方案。
<?php
// server.php
$html = <<<HTML
<!DOCTYPE html>
<html>
<head>PHP GUI</title>
</head>
<body>
<h1>我的 PHP 应用</h1>
<button onclick="callPHP()">调用PHP</button>
<div id="result"></div>
<script>
function callPHP() {
fetch('/api/hello')
.then(r => r.json())
.then(data => {
document.getElementById('result').innerText = data.message;
});
}
</script>
</body>
</html>
HTML;
if ($_SERVER['REQUEST_URI'] === '/' || $_SERVER['REQUEST_URI'] === '/index.php') {
echo $html;
} elseif ($_SERVER['REQUEST_URI'] === '/api/hello') {
header('Content-Type: application/json');
echo json_encode(['message' => 'Hello from PHP! ' . date('Y-m-d H:i:s')]);
}
?>
运行:
php -S localhost:8080 server.php # 然后用浏览器打开 http://localhost:8080
使用 Desktop 原生工具
一些 PHP 框架可以帮助生成桌面应用:
PHP Desktop(最推荐)
使用 PHP 内置 web 服务器 + Chromium/WebView:
# 下载 PHP Desktop git clone https://github.com/cztomczak/phpdesktop.git cd phpdesktop # 修改 www 目录下的 index.php
<?php
// www/index.php
require_once 'phpdesktop-server.php';
$server = new PHPDektopServer('127.0.0.1', 8080);
$server->serve();
?>
使用 Electron 的 PHP 包装(混合方案)
// main.js
const { app, BrowserWindow } = require('electron');
const { exec } = require('child_process');
const path = require('path');
app.whenReady().then(() => {
// 启动 PHP 服务器
exec('php -S 127.0.0.1:8080', { cwd: './php' });
// 创建窗口
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
});
win.loadURL('http://127.0.0.1:8080');
});
TSF(第三方库)
一个比较新的 PHP GUI 库:
use TSF\Window;
use TSF\Controls\Button;
$window = new Window(['title' => '测试', 'width' => 400, 'height' => 300]);
$button = new Button('点击');
$button->on_click(function() {
echo "Clicked!\n";
});
$window->add($button);
$window->show();
推荐方案对比
| 方案 | 难度 | 成熟度 | 跨平台 | 推荐度 |
|---|---|---|---|---|
| PHP-GTK | 难 | 过时 | 有限 | |
| PHP-UI | 中 | 一般 | 好 | |
| WebView混合 | 易 | 稳定 | 好 | |
| PHP Desktop | 易 | 稳定 | 好 | |
| Electron | 中 | 稳定 | 好 |
最佳实践建议
如果只是快速开发简单界面:
<?php
// 使用 PHP Desktop 方式最简单
// 创建 index.php
echo file_get_contents('webapp/index.html');
?>
如果是商业项目: 建议使用 PHP Desktop 或 Electron + PHP 混合方案,因为它们结合了:
- PHP 后端的易用性
- Web 前端的现代能力
- 跨平台支持
完整示例(PHP Desktop):
-
下载 PHP Desktop
-
修改
www/index.php:<?php session_start(); if (!$_SESSION['logged_in']) { echo '<script>location.href="login.php"</script>'; exit; } echo '<h1>欢迎,正在运行 PHP GUI</h1>'; ?> -
运行
phpdesktop-chrome.exe
PHP GUI 开发虽然不如其他语言成熟,但通过混合方案依然可以做出不错的应用,关键是选择适合你项目需求的技术路线。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播