ホームページ >バックエンド開発 >PHPチュートリアル >PHP-GTK とそのアプリケーションの概要_PHP チュートリアル
1. PHP-GTK の概要 1.1 PHP-GTK PHP-GTK は、プログラマがクライアント上で実行される独立した GUI プログラムを作成できるようにする PHP の拡張モジュールです。このモジュールでは、GTK+ プログラムをブラウザーに表示できません。元々はスタンドアロン GUI プログラムを作成するために開発されました。 1.2 GTK GTK は元々、GUI 画像処理ソフトウェアである GIMP 用に開発されました。 GTK+ は GIMP のツールスイートです。 GTK+ はここから進化し、現在では Gnome の中心となっています (Gnome はデスクトップ環境です)。その後、GTK+ は BeOS および Win32 にも昇格され、PHP 拡張モジュールとして最適な選択肢となり、PHP のクロスプラットフォームを維持し、PHP を使用して Linux、BeOS、Windows およびその他のプラットフォーム用のウィンドウ インターフェイス プログラムを開発できます。 2. PHP-GTK の概念 2.1 まえがき 次に、概念的なことをいくつか教えます ┅ この章の概念は非常に重要なので、理解できなくても、ゆっくり理解する必要があります。未来┅。また、以下の内容は混乱しやすい概念が多いため、プログラミング経験のない読者にはお勧めできません。また、海外の文書を読むときに皆さんが戸惑わないように、次の部分は英語で説明します。この章で分からないことがあれば、自分で PHP-GTK を確認してください。マニュアル: http://gtk.php.net/manual/ja/ 2.2 ウィジェット ウィジェットは、GUI プログラムの基本的な機能とフォームです。最も一般的に使用されるウィジェットは、ラベル、ボタン、ウィンドウ、フレーム、テキスト ボックスです。すべてのウィジェットは、抽象基本クラス GtkWidget から来ています。すべてのウィジェットはクラスです。ウィジェットの存続期間にはおよそ 5 つの期間があります。 1. 作成: オブジェクトの宣言 2. 配置: オブジェクトをコンテナー コンテナーに追加します。 3. シグナル接続: シグナルを受信し、アクションを実行します ( 4. 表示: 表示可能かどうか 5. 破棄: プログラムの終了 2.3 コンテナ コンテナは、他のウィジェットを含めることができるウィジェットです。ほとんどのウィジェットは、GtkWindow、GtkTable、GtkBox などのコンテナーです。これを除けば、コンテナは他のウィジェットと同様であり、他のコンテナに配置できます。すべてのコンテナは 1 つのクラス GtkContainer から来ており、このクラス自体は GtkWidget クラスから来ています。したがって、コンテナもウィジェットの一種です。 2.4 シグナル プログラマがプログラム内でアクションを実行するとき、プログラムにはユーザーのアクションに応じたアクションが必要です。シグナルを使用すると、プログラムはユーザーがアクションを実行したことを認識し、適切な応答をトリガーできます。 たとえば、ユーザーが新しいウィンドウを開くことができるボタン (GtkButton) を押すと、プログラムは要求を認識し、新しいウィンドウを開きます。これは信号を介して実行できます。ボタンが押されると、ウィジェットは信号を送信し、その信号によってコールバックがトリガーされて新しいウィンドウ (GtkWindow) が生成されます。 2.5 コールバック コールバックは、シグナルの送信後にシグナルによって呼び出される関数です。コールバックは関数を実行し、値を返すかアクションを実行します。コールバックはシグナルのハンドラー関数です。これは、シグナルのデフォルトのハンドラーまたはプログラマ定義の関数にすることができます。コールバックを作成するには、関数をシグナルに接続する必要があります。 2.6 シグナルの継承 (Inheritance) メソッドと同様に、シグナルもオブジェクトに継承できます。ウィジェットは、親ウィジェットが送信できる任意の信号だけでなく、独自の固有の信号も送信できます。 2.7 シグナルの接続 シグナルの送信時にシグナルに応答するために、PHP-GTK のコールバック関数を指定する必要があります。シグナルを関数に接続するには、connect() オブジェクト メソッドを使用します。 以下のように: connect("destroy", "shutdown"); // ボタンのテキスト「Click me」を含む GtkButton を作成します $button = &new GtkButton("clicked"); " you_clicked"); // GtkButton をコンテナーである GtkWindow に配置します。 $window->add($button); // $window とそのすべての子ウィジェットを表示します。メインプログラム return Circle (プログラムの起動を意味します) gtk::main(); ?> これを実行すると、「Click me」というボタンが表示されたウィンドウが表示されます。ボタンを押すと、プログラムは you_clicked を実行します。関数。このプログラムでは、ユーザーがウィンドウの右上隅にある「X」を押すと $window オブジェクトの「destroy」信号が送信され、ユーザーが押すと $button オブジェクトの「clicked」信号が送信されます。ボタンがプレゼントされます。 gtk::main() の最後の行は、プログラムの実行を開始するようにコンピューターに指示するために実行する必要があります。実行が開始されたので、gtk::main_quit で停止できます。 () プログラムされています。 上記の例を読んだ読者の中には、「シグナルを送信するウィジェット以外のウィジェットのメソッドを実行したい場合はどうすればよいのですか?」という疑問を持つ人もいるかもしれません。このとき、別のメソッド connect_object() が必要になります。スパンオブジェクトはメソッドを呼び出すか、他のオブジェクトを関数パラメータとして渡します。クロスオブジェクト呼び出しメソッドは次のとおりです: $window->connect_object("destroy", array("gtk","main_quit")) このようにして、「destroy」信号が送信されたときに gtk::main_quit() が呼び出されます。このようにして、$window オブジェクトのファイルが送信され、最終的にプログラムが実行されます。 接続メソッドの紹介の最後に、コールバック関数に渡すパラメーターに connect() と connect_object() を追加するカスタム メソッドについて説明します。例を参照: connect("clicked","who_are_you",$parameter); $button2 = &new GtkButton("Test 2"); //「clicked」信号を kill_the_button1 関数に接続し、パラメーター $button1 $button2 を追加します。 ->connect_object("clicked","kill_the_button1",$button1); function who_are_you($widget,$parameter){ echo $parameter; } function kill_the_button($button->destroy() } ?> 注意これら 2 つの関数には 2 つのパラメータがありますよね? 最初のパラメータはなぜ自動的に表示されるのでしょうか? コールバック関数のパラメータが異なるため、デフォルトの確実性が追加されるからです。が渡され、基本的にすべての信号は少なくともパラメータ a をコールバック関数に渡して、信号のオブジェクトを生成します。したがって、who_are_you の最初のパラメータは $button1 で、2 番目のパラメータは $parameter (新しいスーパーマン) です。 kill_the_button 関数は異なります~ connect_object() 関数は元のシグナルのコールバック関数のデフォルトパラメータを呼び出すため、kill_the_button は connect_object の最後に $button1 パラメータを追加するだけです。 このようにして、kill_the_button は $ のメソッドを呼び出すことができます。ここで $button1 の destroy メソッドが呼び出されるため、$button1 が破棄されます。 2.8 イベント イベントはシグナルの一種ですが、その用途と機能は非常に強力です。シグナルに関して言えば、シグナルのようなものはウィジェットに組み込まれているため、たとえば GtkWindow が「クリック」シグナルを持たない場合、GtkWindow がイベントシグナルを使用せずにクリックなどのシグナルを送信することは絶対に不可能です。 。イベントシグナルを使用するとどうなるでしょうか? イベントシグナルは任意のウィジェットに追加できるため、元々「クリック」シグナルを発する機能を持たないウィジェットであっても、add_events() を使用してクリックシグナルを追加することもできます。イベント信号はその後どのような反応をしますか?イベント信号には多くの情報が含まれています。たとえば、イベント信号「key-press-event」を使用すると、どのキーが押されたかも記録されるため、イベント信号のコールバック関数の形式は通常 2 つあります。デフォルトでは、最初のウィジェットは依然としてシグナルを送信するウィジェットであり、2 番目の $event はクラスであり、内部のプロパティとメソッドは送信されるイベントシグナルのタイプによって異なります。 「key-press-event」によって返される $event クラスに関しては、属性の 1 つは keyval であり、内容はユーザーがどのキーを押したかです。これは多くの場合、プログラマーにとって非常に役立つ情報です。したがって、最初は理解できなくても、イベントの重要性を無視することはできません。このセクションも非常に重要です。 3. PHP-GTK のインストール 3.1 Windows システムでのインストール まず、http://gtk.php.net/download.php から HP-GTK の Windows バイナリ ファイルをダウンロードします (この記事の執筆時点ではバージョン 0.5.1)。 次に、PHP-GTK 0.5.1 バイナリ ファイルの内容を見てみましょう。 php4 → php および php-gtk バイナリ ファイル winnt → デフォルトの php.ini ファイル winntsystem32 → 拡張機能 test で使用される gtk バイナリ → いくつかのテスト ファイル README。 txt → インストール マニュアル ファイルに移動して、インストールを開始します。 1. php4 の内容を php インストール ディレクトリ (C:php など) にコピーします。 2. winnt の内容を winnt フォルダにコピーします。 Windows NT または Windows 2000 では C:winnt、Window95、98、および XP では C:windows です。すでに php.ini がフォルダー内にある場合は、この操作を行う必要はありません。 3. winntsystem32 の内容を winntsystem32 フォルダーにコピーします。 Windows NT または Windows2000 では C:winntsystem32、Window95、98、および XP では C:windowssystem32 です。 4. テストの内容をスクリプトを実行する場所にコピーします (この手順は必要ありません)。 PHP-GTK プログラムの実行方法: PHP-GTK プログラムは、「スタート」-「実行」で次のようなコマンドを入力する (またはショートカットを作成する) ことで起動できます。 C:phpphp -q c:phptestgtk.php ##これは、HTTP ヘッダーを出力しないことを意味しますが、プログラムを閉じるまでこのウィンドウを使用し続けます。 C:phpphp -q -c php.ini c:gtk.php ## 上記と同じですが、指定された php.ini 設定を実行します。 C:phpphp C:phptestgtk.php ## は、HTTP ヘッダーが出力されることを意味しますが、このウィンドウはプログラムが閉じるまで使用されます。 C:phpphp_win C:phptestgtk.php ## は、ウィンドウが使用されないことを意味します。実行後は、php -qモードで別の実行プログラムが実行されますが、エラーメッセージなどの文字が出力されている限り実行は停止します。 3.2 UNIX システムでのインストール Debian ユーザーは、http://www.debian.org から PHP-GTK のバイナリ ファイルをダウンロードできます。システム要件には、次のパッケージがインストールされている必要があります: PHP 4.1.0 以降。すべてのヘッダー ファイルと開発スクリプトを含め、CGI バイナリ (コマンドライン) バージョンとしてコンパイルする必要があります。 PHP-GTK は GTK+ v1.2 をサポートしており、GTK+ バージョン 1.2.6 以降をインストールする必要があります。 GTK+ v2.0 はまだサポートされていないため、開発およびリリースされるまで待つ必要があります