最後更新:2016-06-01
來源:互聯網
上載者:User
關鍵字
PHP開發學堂:PHP-GTK介紹及其應用
1. PHP-GTK介紹
1.1 PHP-GTK
PHP-GTK是PHP的延伸模組,它可以讓程式設計師寫出在用戶端執行的、且獨立的GUI的程式。這個模組不允許在瀏覽器上顯視GTK+的程式,它一開始就是開發來寫獨立的GUI程式的。
1.2 GTK
GTK原本是為GIMP,一個GUI的影像處理軟體而開發的。GTK+是GIMP的套裝工具。GTK+從這裡開始發展,直到現在已經成為Gnome的中心(Gnome是一個案頭環境)。後來GTK+也已經被推廣到BeOS和Win32,使得它成為PHP延伸模組的最佳選擇,維持PHP可以跨平台並可以用PHP為Linux,BeOS,Windows等平台開發視窗介面的程式。
2. PHP-GTK概念
2.1 前言
接下來就要教各位一點點比較觀念性的東西羅┅因為這章的概念都是非常重要的,所以就算不懂,也還是要慢慢的看懂它,不然┅以後就┅。還有,接下來的內容不建議沒有程式設計經驗的讀者閱讀,因為有很多的觀念很容易會搞不清楚。還有,接下來該用英文的部分我都會用英文,這樣大家在看國外檔案的時候才不會不知所措,加油吧!!如果對本章有任何不懂之處,請自行查閱
PHP-GTK Manual:http://gtk.php.net/manual/en/
2.2 Widget(s)
Widget是一個GUI程式中基本的functions和forms。最常用的幾個Widget是:label、button、window、frame和text box。所有的widget都是來自於一個抽象的基本class─GtkWidget。每個widget都是一個class
一個Widget一生大概都有五個時期:
1. 建立(Creation):宣告一個對象(declaring an object)
2. 放置(Placement):將它加入一個容器中(adding it to a container)
3. 訊號串連(Signal Connection):接收訊號以及進行動作(the action it will perform)
4. 顯示(Display):它是否是可見的(whether it is viewable or not)
5. 刪除(Destruction):關閉程式(closing of a program)
2.3 Container(s)
Container是一個可以包含其它widget的widget。大部分的widget都是container,例如:GtkWindow、GtkTable和GtkBox。除了這點之外,container跟其它的widget沒兩樣,也可以被放到其它container去。而所有的container都是來自於一個class─GtkContainer,本身來自於GtkWidget的class。所以container也是widget的一種。
2.4 Signal(s)
當程式設計師在程式中做了一個動作時,程式需要有一個動作來回應使用者的動作。Signals使程式可以知道使用者做了動作並可以觸發適合的回應。
例如,當使用者按了一個可以開新視窗的按鈕(GtkButton),程式認出這個請求,於是就開了一個新的視窗。這件事可以經由signal來做到。當按鈕按下去之後,會使widget發出一個signal,接著再由該signal觸發callbacks,產生一個新的視窗(GtkWindow)。
2.5 Callback(s)
Callback就是當signal送出之後,被signal喚起的function。Callback會執行function傳回一個值或是做一個動作。Callback就是signal的handler funciton。它可以是該signal的預設handler或著是程式設計師定義的function。要建立一個callback,就必須把function connect 到 signal。
2.6 Signal Inheritance(繼承)
和methods一樣,signals可以被對象繼承。一個widget可以送出任何它的parent widget可以送出的還有它自己特有的signal。
2.7 Connecting Signals
你必須為PHP-GTK指定一個callback function當signal送出時來對signal做回應。把一個signal串連到一個function可以用connect() 這個object 方法達成。
如下:
//建立一個GtkWindow
$window = &new GtkWindow();
//將"destroy" signal用connect() 方法串連到shutdown函式
$window->connect("destroy", "shutdown");
1 2 3 4 5 下一頁