V. Annexes▲
V-A. Code objet▲
Comme dit plus haut, voici le même script en pseudo objet PHP 4. Nous l'avons mis en annexe pour ne pas perturber la lecture.
Nous vous le proposons, car il existe une différence essentielle entre le code procédural et l'objet.
Nous voyons que nous n'utilisons plus la méthode connect(), mais connect_object() qui prend deux paramètres. Le premier est le rappel (comme dans connect()), mais le deuxième est un tableau contenant le widget (&$this == GtkWindow) et la fonction associée.
<?php
if
(!
class_exists("gtk"
)) {
if
(strtoupper(substr(PHP_OS,
0
,
3
) ==
"WIN"
)) {
dl("php_gtk.dll"
);
}
else
{
dl("php_gtk.so"
);
}
}
class
dvp_obj {
var
$window
;
var
$button
;
var
$tt
;
//Constructeur
function
dvp_obj() {
//creation de la GtkWindow
$this
->
window =
&
new
GtkWindow();
$this
->
window->
connect_object("destroy"
,
array
(&
$this
,
"destroy"
));
$this
->
window->
set_border_width(10
);
//creation du GtkButton
$this
->
button =
&
new
GtkButton("Dvp"
);
$this
->
button->
connect_object("clicked"
,
array
(&
$this
,
"hello_dvp"
));
$this
->
window->
add($this
->
button);
//creation du GtkTooltips
$this
->
tt =
&
new
GtkTooltips();
$this
->
tt->
set_delay(200
);
$this
->
tt->
set_tip($this
->
button,
"Donnez votre avis sur le site de dvp"
,
""
);
$this
->
tt->
enable();
//affichage de la fenêtre
$this
->
window->
show_all();
}
//fonction destroy
fonction destroy() {
Gtk::
main_quit();
}
//fonction hello_dvp
function
hello_dvp() {
print
"Dvp, c'est drôlement bien!
\n
"
;
$this
->
window->
destroy();
}
}
$win
=
new
dvp_obj();
Gtk::
main();
?>
V-B. Quelques liens sur PHP-GTK▲
V-C. Remerciements▲
Nous voudrions remercier quelques membres de developpez.com :
- BWP-Necromance pour son aide, sa patience et sa disponibilité ;
- Yogui pour sa patience, sa relecture ainsi que son aide à la mise en forme de cet article ;
- Titoumimi pour la filiation de Yiannis.