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(NULLAppWindow"ようこそ!"300200);
  
// 新しいウィンドウを作成。引数は順に、parent ウィンドウ、作成するウィンドウの種類、
  // ウィンドウのタイトルバー(キャプション)、x方向サイズ、y方向サイズ。

wb_create_control($mainwinPushButton"ここを押す"1108080401);
  
// 新しいコントロールを作成。今回の場合はボタン。引数は、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(NULLAppWindow"カウンター"300200);

wb_create_control($mainwinPushButton"スタート!"10080100401);
wb_create_control($mainwinLabel"0"1455020202);
  
// コントロールとして新たにLabelを追加。IDを2とする。

wb_set_handler($mainwin"process_main");

wb_main_loop();

function 
process_main($window$id$ctrl)
// 第3引数として$ctrlを取る。この引数は、ウィンドウにメッセージを渡したコントロールを取得します。
  
$counter wb_get_control($window2);
    
// 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($counter0);
        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