Forum und email

Orientação a Objetos Basica

Eu vou assumir que você já seja acostumado a programação orientada a objetos. Se você não for, eu sugiro que você se acostume com ela antes de continuar com este tutorial. Você pode também olhar o manual do PHP na seção sobre orientação a objetos para o PHP5, assim tudo isto fará mais censo para você

Nós vamos começar em "portar" o programa simples Alô Mundo! para uma natureza orientada a objetos, assim você pode ter uma amostra do conceito rapidamente. A primeira coisa que você tem que fazer é criar uma classe. A maneira mais fácil de fazer a sua classe é extender umas das classes do PHP-GTK 2. Agora, a maioria das aplicações tem um GtkWindow como seu widget principal. Assim faz o nosso programa Alô Mundo. Assim o que nós vamos fazer é criar uma classe que extenda GtkWindow, assim fará o nosso trabalho mais fácil:

<?php

class Hello extends GtkWindow
{
    // o código vai aqui.
}

?>
Agora nós precisamos criar o construtor da nossa classe (uma função que é chamada quando um objeto da nossa classe é criado). Vamos pensar sobre o que nós precisamos colocar no construtor. Já que o construtor é a primeira coisa a ser chamada quando um objeto da nossa classe é criado, nós precisamos todos os aspectos do design do nosso programa no construtor. Isto indica que o construtor é o lugar onde criamos todos os widgets que vamos precisar, desenhar o nosso layout (veja Empacotando Widgets) e finalizar como a nossa aplicação deve aparecer.

Agora a nossa classe extende GtkWindow, mas isso não quer disser que o construtor GtkWindow será chamado automaticamente. Este é o funcionamento padrão no PHP5 e assim nós devemos chamar o construtor de GtkWindow explicitamente, usando a palavra chave parent:

class Hello extends GtkWindow
{
    function __construct()
    {
        parent::__construct();
    }
}
Isto significa que um GtkWindow será criado (sem parâmetros passados para o seu construtor) quando um objeto da nossa classe "Hello" for criado. Agora a questão é como acessar a janela récem criada. A palavra chave this vem em nosso socorro! Usando esta palavra chave nós podemos modificar todos os aspectos da nossa janela récem criada:
function __construct()
{
    parent::__construct();
    $this->set_title('Alô Mundo!');
    $this->connect_simple('destroy', array('gtk', 'main_quit'));
}

Já que este é um programa muito simples, nós podemos finalizar as nossas tarefas no construtor em sí. Nós simplesmente colocamos o código que nós tinhamos colocado em nosso programa orientado a procedimentos aqui. Assim nós temos o programa terminado:

Exemplo 8.1. Alô Mundo - Estilo Orientado a Objetos

<?php

class Hello extends GtkWindow
{
    function __construct()
    {
        parent::__construct();
        $this->set_title('Hello World');
        $this->connect_simple('destroy', array('gtk', 'main_quit'));

        $label = new GtkLabel("Just wanted to say\r\n'Hello World!'");

        $this->add($label);
        $this->show_all();
    }
}

new Hello();
Gtk::main();

?>
Mesmo sendo dificilmente este exemplo um grande exemplo para mostrar o caminho para uma maneira orientada a objetos, ele deve ajudar bastante para você começar. Nós iremos ver alguns dos conceitos mais avançados agora.