Conheça o Adianti Framework para PHP:

  • Desenvolvimento com componentes;
  • Formulários e datagrids.
  • Versão Web e Desktop (Gtk);
  • Multiplataforma;
  • Desenhe as interfaces;
  • IDE própria (Adianti Studio).
Ver detalhes...

Programando em PHP-GTK

Para prosseguir com o download do artigo, é necessário realizar login utilizando o Facebook ou Google. Este procedimento é totalmente seguro e nossa aplicação é certificada por ambos os serviços. Após a autenticação, você será direcionado de volta à nossa página para continuar o download.

Login com Facebook Login com Google

Resumo

Pablo Dall'Oglio Introdução Até agora o grande uso que se deu à linguagem PHP é aquele que você já conhece1, uma linguagem de script server-side, cujos resultados visíveis para o usuário (até meados de 2001) ficavam em sua maioria restritos a um Web Browser. Foi quando Andrei Zmievski resolveu criar uma extensão desta linguagem, o PHP-GTK. Esta extensão permite que você faça aplicações gráficas client-side e independentes de plataforma. O PHP-GTK foi criado para provar que o PHP é uma linguagem de grandes propósitos, além da fronteira de um browser. O PHP-GTK não serve para exibir aplicações GTK em um browser, e sim para construir aplicações gráficas standalone. Veja a seguir alguns termos comuns. Widgets, Signals e Callbacks Widget é um termo usado no mundo do X (o "modo gráfico" do Linux e outros Unices) e serve para representar uma caixa de texto, label, frame, window ou qualquer outro componente GUI (Graphical User Interface - Interface Gráfica de Usuário). Os Widgets do GTK (Gnome Toolkit) são todos derivados da base abstrata de classes GtkWidget com seus métodos, sinais e propriedades. Signals são notificações (mensagens) emitidas por widgets. Quando se programa Interfaces Gráficas (GUI) geralmente é necessário responder a ações realizadas pelo usuário ou iniciadas dentro do próprio programa. Quando um usuário clica em um botão, um sinal é emitido. Callbacks são funções que são registradas pelo programador para reagir a sinais emitidos por widgets. Mãos à Obra Para programar em PHP-GTK é necessário instalar o PHP, e logo em seguida o PHP-GTK. Claro que o mais interessante é compilar junto um banco de dados como PostgreSQL ou MySQL para trazer os resultados do Banco para interface gráfica. Lembre-se que o PHP-GTK por ser uma extensão, traz junto consigo a enorme gama de funções do PHP, como conexão a diversos BD's, manipulação de strings, etc. Veja instruções detalhadas para instalação em: http://gtk.php.net. Conteúdo original em Inglês mas que possui boa parte já traduzida para o português que publicarei em breve no site do PHP-GTK. Você pode ir acessar a versão preliminar da tradução em http://php-gtk.codigoaberto.org.br e contribuir com comentários e sugestões. Basicamente um programa PHP-GTK carrega uma biblioteca compilada com as diversas classes do GTK, juntamente com métodos e propriedades, valendo-se destes para construir a aplicação através de widgets (janelas, botões, ComboBoxes...) e sinais. Utilizamos o PHP na linha de comando para rodar as aplicações phpGTK. Exemplo: #php programa.php Nosso primeiro código em phpGTK: Uma janela que permite ao usuário digitar um texto que será impresso na linha de comando. get_text() . "\n"; //imprime no shell return; } $window = &new GtkWindow; // instancia janela $window->set_title('Primeira Janela'); // titulo da janela $window->set_border_width(0); // borda da janela $window->set_default_size(130, 60); // dimensões $vbox = &new GtkVBox(); // monta caixa vertical $vbox->show(); //exibe $window->add($vbox); // adiciona caixa à janela // instancia label $texto = &new GtkLabel('Teste Para revista do Linux'); $vbox->pack_start($texto); // joga label em caixa vert. $texto->show(); // exibe label $input = &new GtkEntry(); // cria input para ent. de dados $vbox->pack_start($input); // joga input em caixa vert. $input->show(); // exibe input // cria botão $button = &new GtkButton('Imprime no shell'); $button->show(); // liga o sinal clicked à função ImprimeInput $button->connect_object('clicked', 'ImprimeInput'); $vbox->pack_start($button); // joga botão na caixa vert. $window->show(); // exibe a janela Gtk::main(); // loop princpal do Gtk, aguarda // por eventos causados pelo usuário ?> Agata Report : uma aplicação PHP-GTK O Agata Report é além de um editor de consultas SQL, um gerador de relatórios PostScript e em modo Texto. É escrito em PHP-GTK, orientado a objetos e usa a Pear::DB uma classe abstrata para conexão com diversos BD's homologada pelo próprio PHP group. Portanto além de gráfico, o Agata Report já nasce tendo uma gama de BD's grande a explorar. Ele conecta ao Banco, lista suas tabelas, permite ao usuário criar ligações entre elas, utilizar funções, ordenar por campos, agrupar, criar restrições para este ou aquele campo e por fim executar a consulta. A Versão 2.0 também possui um editor de consultas mescladas para documento. Você escreve o documento, insere variáveis da consulta SQL, e mescla o resultado para um documento PostScript (mala direta por exemplo), utilizando a PsLib. A primeira versão era em Português/Inglês e funcionava para PostgreSQL. Era pra satisfazer os nossos usuários do SAGU aqui na Univates na geração de relatórios. Mas logo que foi publicada, a comunidade começou a se manifestar. Recebemos colaborações da Índia- Tarique Sani (Versão Mysql), França - Christian Etuy (Versão em Francês), Ástria - Marcus Fischer (sugerindo e ajudando com Pear::DB), Frank Kromann da FrontBase (Versão FrontBase), Alemanha (Thomas Sprietersbach - Versão em Alemão), Inglaterra - Steph Fox (documentação do php-gtk). Enfim foram diversas contribuições do mundo inteiro. O Agata não será utilizado somente por nossos usuários do SAGU mas também por nossos usuários da Biblioteca, que em breve estarão utilizando o GnuTECA. Atualmente muito mais gente usa o Agata, e contribui com ele. Este é o charme do software livre. No final das contas, de tanto precisar da documentação do PHP-GTK, hoje me tornei documentador e tradutor dele para o Português. Pablo Dall'Oglio UNIVATES - Desenvolvedor sênior Projetos SAGU e GnuTECA pablo@univates.br - pablo@php.net Referências http://gtk.php.net (site oficial) http://rau-tu.univates.br (perguntas e respostas sobre PHP-GTK) http://agata.codigoaberto.org.br (site oficial) http://phpviolao.codigoaberto.org.br (+ um projeto PHP-GTK) http://phpcorg.codigoaberto.org.br (+ um projeto PHP-GTK) http://pslib.codigoaberto.org.br (PsLib) http://www.univates.br (Univates)