PHPで作れるGUIアプリケーションは、Webアプリケーションだけではありません。 WinbBnderを使えば、Windows上でデスクトップアプリケーションを作成すること も可能です。
WinBinderは、http://winbinder.org/download.php から入手可能です。 自動インストール版とマニュアルインストール版があります。
自動インストールの場合、特に設定を変更せずにインストールすれば、Cドライ ブの直下にWinBinderディレクトリが作成され、 同時にその中にPHPも含めたファイルが展開されます。PHPも同時にインストール するかどうかは、選択可能です。
では、実際にアプリケーションを作成していく手順を説明します。 今回は使用法ということで、まずは単純にボタン押下で「Hello World」がポッ プアップするアプリケーションを作成します。
任意の場所にexample.phpwという名前でファイルを作成します。 拡張子が.phpではなく、phpwであることに注意してください。中身は普通のPHP スクリプトです。
example.phpwのソースは以下のようになります。 日本語を含む場合には、Windows上で文字化けを起こさないようにShift_JISで保 存してください。
<?php
include "c:/winbinder/phpcode/include/winbinder.php";
$mainwin = wb_create_window(NULL, AppWindow, "ようこそ!", 300, 200);
// 新しいウィンドウを作成。引数は順に、parent ウィンドウ、作成するウィンドウの種類、
// ウィンドウのタイトルバー(キャプション)、x方向サイズ、y方向サイズ。
wb_create_control($mainwin, PushButton, "ここを押す", 110, 80, 80, 40, 1);
// 新しいコントロールを作成。今回の場合はボタン。引数は、parentウィンドウ、作成するコントロールの種類、
// ウィンドウ左上端からのコントロールの配置位置(x,y),x,y方向のコントロールのサイズ、コントロールのID。
wb_set_handler($mainwin, "process_main");
// ウィンドウへ"process_main"関数をイベントハンドラとして割り当てている。
wb_main_loop();
// ここでウィンドウ のメインループに入る。これより後に、実行文を書いてはならない。
function process_main($window, $id)
{ //ハンドラ関数。第1引数にウィンドウのハンドラ、第2引数にウィンドウ内のオブジェクトに割り当てられたIDが入る。
switch ($id) {
case 1:
wb_message_box($window, "Hello World");
// ポップアップを生成。第1引数はparentウィンドウ、第2引数は表示テキ
スト。
break;
case IDCLOSE:
// 【x】ボタンが押された場合
wb_destroy_window($window);
// ウィンドウを終了する。
break;
}
}
?>
上記のようなスクリプトを作成し、保存したexample.phpwを実行すると、GUIの デスクトップウィンドウが起動します。
さて、これを少しだけ変更して、ボタンを押すと値をカウントアップし、10でリ セットされる、というアプリケーションを作りましょう。
<?php
include "c:/winbinder/phpcode/include/winbinder.php";
$mainwin = wb_create_window(NULL, AppWindow, "カウンター", 300, 200);
wb_create_control($mainwin, PushButton, "スタート!", 100, 80, 100, 40, 1);
wb_create_control($mainwin, Label, "0", 145, 50, 20, 20, 2);
// コントロールとして新たにLabelを追加。IDを2とする。
wb_set_handler($mainwin, "process_main");
wb_main_loop();
function process_main($window, $id, $ctrl)
{ // 第3引数として$ctrlを取る。この引数は、ウィンドウにメッセージを渡したコントロールを取得します。
$counter = wb_get_control($window, 2);
// IDが2のコントロールを取得
$count_value = wb_get_value($counter);
// そのvalueを取得
switch ($id) {
case 1:
if ($count_value > 9) {
wb_set_text($ctrl, "再スタート!");
// wb_set_text()関数でボタンの表記を書き換え
wb_set_value($counter, 0);
break;
} else if (!$count_value) {
wb_set_text($ctrl, "カウント");
}
wb_set_value($counter, $count_value + 1);
break;
case IDCLOSE:
wb_destroy_window($window);
break;
}
}
?>
非常に簡単なスクリプトですが、これだけでGUIアプリが作れるのですから、面 白いと思いませんか? 用意された関数などを詳しく知りたい場合は、WinBinderのページのマニュアル をご覧ください。
WinBinder: http://winbinder.org/index.php