Cuando comenzas a aprender un lenguaje de programación, el primer programa que a menudo de escribe es un programa del tipo 'hola mundo'. Por eso, para que sea de la misma forma, el primer tutorial en este manual es solo un tutorial 'hola mundo'.
Esperamos que tengas conocimientos de PHP. El turotial esta diseñado para dar al usuario una idea de como usar PHP-GTK, como asi también sus técncias.
En este tutorial nosotros crearemos una simple ventana con un texto "Hola Mundo" en ella.
Empezaremos por listar el programa y luego explicaremos linea a linea el programa, dando una introducción a una aplicación PHP-GTK básica.
Ejemplo 1.1. Listado del progrma Hola Mundo en PHP-GTK
<?php if (!class_exists('gtk')) { if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) dl('php_gtk.dll'); else dl('php_gtk.so'); } function delete_event() { return false; } function shutdown() { print("Shutting down...\n"); gtk::main_quit(); } function hello() { global $window; print "Hello World!\n"; $window->destroy(); } $window = &new GtkWindow(); $window->connect('destroy', 'shutdown'); $window->connect('delete-event', 'delete_event'); $window->set_border_width(10); $button = &new GtkButton('Hello World!'); $button->connect('clicked', 'hello'); $window->add($button); $window->show_all(); gtk::main(); ?> |
<?php if (!class_exists('gtk')) { if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) dl('php_gtk.dll'); else dl('php_gtk.so'); } ?> |
La función delete_event() se registra como un manejador (vea debajo) para la señal "delete-event". Devuelve false, diciendole a PHP-GTK que ejecute el manejador por defecto de eventos, que en este caso es el método destroy() . Si la función hubiera devuelto true, PHP-GTK tendria que hacer parado de ejectuar el manejador para la señal. Esto es importante de conocer si se necesitariá escribir una función definida por el usuario en lugar de destroy() - por ejemplo, para producir una caja de dialogos confirmando si el usuario desea cerra la aplicación.
No es necesario estrictamente devolver false para conectar la señal "delete-event" a el método destroy() , como lo hace esta señal en particular devolviendo false por defecto. Es posible no especificar ningun comportamiento para una señal como "delete-event" de una ventana, solo vasta con la señal "destroy" y asi funcionan correctamente.
Ejemplo 1.4. La función shutdown()
<?php function shutdown() { print("Shutting down...\n"); gtk::main_quit(); } ?> |
Ejemplo 1.5. La función hello()
<?php function hello() { global $window; print "Hello World!\n"; $window->destroy(); } ?> |
Otra forma de que la función hello() pudiera ser capaz de acceder a la variable $window de la ventana seria si la variable se pasaria como un parametro personalizado.
Ejemplo 1.6. Configuando la ventana
<?php $window = &new GtkWindow(); $window->connect('destroy', 'shutdown'); $window->connect('delete-event', 'delete_event'); $window->set_border_width(10); ?> |
Ejemplo 1.7. Setting up the Button
<?php $button = &new GtkButton('Hello World!'); $button->connect('clicked', 'hello'); $window->add($button); $window->show_all(); ?> |
La linea final del script llama la función estática gtk::main. Esto le dice a PHP-GTK que terminamos de crear y configurar nuestra interfase, y que el bucle principal puede comenzar a escuchar los eventos para ejecutarlo por la interacción del usuario por eso la funciones que definimos anteriormente pueden ser llamadas y varias acciones llevadas a cabo en ellas.