1. 什麼是 PHP-GTK
- PHP 擴展模組,允許編寫**客戶端獨立 GUI 程式**(非瀏覽器執行)。
- 基於 GTK+(GIMP Toolkit),跨平台:Linux, Windows, BeOS。
- 不支援在瀏覽器顯示 GTK 介面。
2. 核心概念
Widget(元件)
- GUI 基本單位:
GtkWindow, GtkButton, GtkLabel, GtkEntry, GtkTextView...
- 皆繼承自抽象基類
GtkWidget。
- 生命週期:建立 → 放入容器 → 連接信號 → 顯示 → 銷毀。
Container(容器)
- 可包含其他 Widget 的 Widget:
GtkWindow, GtkBox, GtkTable, GtkFixed。
- 繼承
GtkContainer → GtkWidget,本身也是 Widget。
Signal(信號)與 Callback(回呼)
- 使用者動作(點擊、按鍵)觸發 Widget 發出 Signal。
- Signal 連接到 Callback 函式執行回應邏輯。
$widget->connect("signal_name", "callback_func")
connect_object() 可跨物件呼叫方法、傳遞額外參數。
Event(事件)
- 特殊 Signal,可動態加入任何 Widget(
add_events())。
- 攜帶豐富資訊(如按鍵碼、滑鼠座標),Callback 參數通常為
($widget, $event)。
3. 範例:最小視窗與按鈕
<?php
$window = new GtkWindow();
$window->connect("destroy", "shutdown");
$button = new GtkButton("按我");
$button->connect("clicked", "you_clicked");
$window->add($button);
$window->show_all();
gtk::main(); // 進入主迴圈
function shutdown() { gtk::main_quit(); }
function you_clicked() { echo "被點擊了!\n"; }
?>
4. Windows 安裝步驟
- 下載
php-gtk--win32.zip(官網 gtk.php.net)。
- 解壓
php4/ 內容到 PHP 安裝目錄(如 C:\php)。
- 複製
winnt/ 內容到 C:\Windows(或 C:\WinNT),含 php.ini。
- 複製
winnt\system32/ 內容到 C:\Windows\System32(GTK DLLs)。
- (選擇性)複製
test/ 範例腳本到執行目錄。
5. 執行方式
php -q script.php # 不送 HTTP Header,保留主控台視窗
php -q -c php.ini script.php
php script.php # 送 HTTP Header
php_win script.php # 無主控台獨立執行,輸出任何字元即終止
6. Linux 安裝提要
- 需 PHP 4.1.0+ (CGI/CLI 版)、GTK+ 1.2.6+、GLib、Pango、ATK 開發套件。
- 下載原始碼
./configure --with-php-config=... --with-gtk=... → make && make install。
- Debian 可直接
apt-get install php-gtk。
7. 學習資源