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...

Conhecendo o 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

Introdução Este artigo será o primeiro de uma série, onde conheceremos o PHP-GTK, extensão da linguagem de programação PHP, que nos permite desenvolver aplicações gráficas standalone. Neste primeiro artigo, iremos conhecer melhor o por que de sua criação e também alguns mitos e verdades sobre esta ferramenta que está conquistando cada vez mais desenvolvedores. O que é o PHP ? O PHP é originalmente uma linguagem de script server-side. Batizado primeiramente como "Personal Home Pages", foi concebido no outono de 1994 por Rasmus Lerdorf. Ele a escreveu como um modo de rastrear os visitantes de seu currículo on-line. A primeira versão data de 1995, época na qual Rasmus achou que se o PHP fosse de código-livre, as pessoas corrigiriam seus bugs. O núcleo do PHP seria reescrito mais tarde por Zeev Suraski e Andi Gutmans, formando o mecanismo que hoje é conhecido como Zend Engine (Zend=Zeev + Andi). Atualmente, PHP significa "PHP: Hypertext Preprocessor" e é uma poderosa linguagem de programação mantida por um grupo de programadores e com uma vasta comunidade de programadores. O que é o GTK ? O GTK é um conjunto de bibliotecas cujo propósito é servir ao desenvolvedor como base para criar aplicações gráficas. O GTK (GIMP ToolKit) foi originalmente desenvolvido para o software de manipulação de imagens GIMP (GNU Image Manipulation Program). Ele tem crescido muito desde o início do projeto e hoje é utilizado como parte central do Gnome, uma das interfaces gráficas e plataformas de desenvolvimento mais utilizadas para Linux. O GTK+ também tem sido portado para o BeOS e Win32, fazendo da linguagem a escolha perfeita para o desenvolvimento de aplicações gráficas multi-plataforma. O que é o PHP-GTK ? O PHP-GTK não é uma nova linguagem de programação, mas sim um projeto que visa disponibilizar toda a biblioteca de componentes gráficos GTK como uma extensão do PHP, permitindo a criação de aplicações gráficas com a linguagem PHP e tudo que ela oferece, como a sintáxe flexível, a tipagem dinâmica, a quantidade enorme de documentação à respeito, livros e a grande comunidade ativa, além é claro, de comunicar com praticamente todos os bancos de dados existentes e permitir a geração de gráficos, planilhas, documentos PDF, dentre outros, através de suas demais extensões. O PHP-GTK é a primeira extensão da linguagem PHP que permite escrever aplicações client-side com GUI (Graphical User Interface). Foi escrita, em parte, para provar que o PHP é uma linguagem completa e de grandes propósitos. Multi-Plataforma Ao escrever um programa em PHP-GTK você poderá rodá-lo da mesma forma nas principais plataforamas do mercado (Linux, Windows e Mac), sem ser necessário recompilar o código, uma vez que o código do PHP não é compilado, mas sim interpretado. Será necessário somente ter o interpretador do PHP com suporte à biblioteca GTK instalado no sistema operacional. Atualmente, na sua segunda versão, a biblioteca GTK possui um visual extremamente atraente. Você escreverá um programa que irá rodar com visual nativo em um sistema Linux e também em um Windows. Para isto, não será necessário alterar nenhuma linha sequer de seu código-fonte. Performance Muitas pessoas tem o receio de que um código interpretado seja lento ao rodar aplicações standalone. Tenho que dizer que estas estão tremendamente enganadas. O mecanismo Zend, que existe por trás do PHP, otimiza em muito a execução do código, uma vez que ele é carregado em memória. O Zend realiza uma espécie de pré-compilação do código e uma vez que as classes estão carregadas na memória, a aplicação tem uma performance excepcional, não deixando nada à dever para linguagens compiladas. O carregamento de uma simples grid com dados de mil pessoas de um banco de dados PostgresSQL não-otimizado tem um tempo de carregamento de cerca de dois segundos em um computador atual. Temos vários casos de aplicações em PHP-GTK rodando com folga em antigos Pentium 200 com 128 Mb de RAM com interface gráfica leve (FluxBox) e um terminal de atendimento público rodando por vários meses de forma ininterrupta, sem ter qualquer tipo de problemas e realizando centenas de transações por dia. Produtividade De que adianta uma ferramenta de desenvolvimento ser rápida, multi-plataforma, se você não consegue produtividade com ela ? O PHP5 surpreendeu o mundo ao adicionar recursos fabulosos no quesito orientação a objetos. O PHP-GTK tira proveito de todos estes recursos ao máximo. Neste sentido, o desenvolvedor pode criar facilmente, por meio do mecanismo de herança, novos componentes como formulários e listagens, baseados nos componentes nativos do GTK. Além disto, o desenvolvedor poderá fazeer uso do Glade, uma ferramenta reconhecida por toda a comunidade Linux, por permitir desenhar interfaces para qualquer projeto GTK, seja desenvolvido em C, Python, Java ou PHP. O Glade salva toda a interface da aplicação em um arquivo XML que pode ser facilmente invocado pela aplicação. Reutilização de Código Um dos grandes desafios da engenharia de software é o reuso. A utilização de alguns padrões, como a modularização e a programação em camadas maximizam o reuso de software. Em PHP, não é raro termos de criar sistemas híbridos, com uma interface predominantemente WEB e com alguns módulos em GTK que rodam na máquina do cliente. Diversas situações tornam isto necessário, principalmente em interfaces onde precisamos de maior agilidade, como terminais de atendimento, pontos de vendas, onde precisamos de teclas de atalho e comunicação com dispositivos periféricos. Nestes casos, podemos reaproveitar toda a lógica de negócio da aplicação já escrita para WEB, agora na aplicação cliente, em GTK. Mas para isto, é praticamente imprescindível que a aplicação esteja orientada a objetos e que a camada de lógica de negócio não contenha nenhum código visual (tags HTML, por exemplo). Nestes casos, podemos utilizar as mesmas classes da WEB, nos preocupando apenas com a parte visual da aplicação (GTK). Na figura a seguir, procuramos demonstrar uma aplicação em camadas, onde o usuário se comunica a camada visual (HTML ou GTK), sendo que esta dispara eventos da camada de negócio, que contém relacionamentos entre os objetos pertinentes ao modelo conceitual (Cliente, Venda) e trata da persistência destes no banco de dados, representados pelo PostgreSQL e pelo Oracle na figura. Exemplo Para finalizarmos nosso primeiro artigo com um exemplo prático, vamos criar uma janela (objeto GtkWindow) com duas abas. A primeira aba estará vazia e a segunda aba conterá uma caixa vertical com dois objetos. O primeiro objeto será um róduto de texto (objeto GtkLabel) e o segundo será uma caixa de entrada de dados (objeto GtkEntry). Veja como se dá a criação dos objetos e a chamada de métodos set_size_request(300,200); $janela->set_border_width(20); $janela->set_title('Título da Janela'); // cria duas caixas verticais $pagina1 = new GtkVBox; $pagina2 = new GtkVBox; // adiciona alguns objetos $pagina2->add(new GtkLabel('Código')); $pagina2->add(new GtkEntry('1234')); // cria um notebook $note = new GtkNotebook; $note->append_page($pagina1, new GtkLabel('Título 1')); $note->append_page($pagina2, new GtkLabel('Título 2')); // adiciona o notebook na janela $janela->add($note); // exibe a janela $janela->show_all(); Gtk::Main(); ?> Conclusão Neste primeiro artigo vimos alguns conceitos básicos. Nos próximos artigos iremos abordar aspectos avançados como a criação da interface, a ferramenta glade, conceitos de sinais e callbacks além de conexão com bancos de dados. Referências e links sugeridos [PHP-GTK Brasil] - http://www.php-gtk.com.br [Livro PHP-GTK] - http://www.php-gtk.com.br/book [Site do Autor] - http://www.pablo.blog.br Sobre o Autor Pablo Dall'Oglio é graduado em Análise de Sistemas pela UNISINOS. Autor do livro sobre PHP-GTK pela novatec editora. Programa em PHP-GTK desde sua criação em 2001. É membro do time de documentação e criador da comunidade brasileira de PHP-GTK (www.php-gtk.com.br). Atualmente, é diretor de tecnologia e proprietário da Adianti Solutions (www.adianti.com.br) onde atua como consultor de tecnologia e engenheiro de software. Pode ser contatado pelo e-mail pablo@php.net.