Back-End

10 nov, 2017

Construindo interfaces gráficas com php-gui

Publicidade

Todos sabemos que o PHP é uma linguagem que foi criada e é bastante utilizada para projetos web. Portais, websites, redes sociais, blogs, APIs e muitos outros sistemas web utilizam o PHP como core de suas aplicações.

Porém, não é apenas isso que a linguagem faz. Em um artigo anterior https://imasters.com.br/desenvolvimento/5-bibliotecas-e-projetos-php-que-voce-deveria-conhecer/ eu falo sobre um projeto que é um emulador de gameboy que um grande desenvolvedor PHP brasileiro, o Gabriel Rodrigues Couto, vulgo Bob, desenvolveu.

Dessa vez irei apresentar mais um projeto dele, no caso agora é algo ainda mais louco. É uma biblioteca de interface gráfica em PHP, o php-gui. Esse projeto não foi desenvolvido com o intuito de utilizarmos o PHP como uma linguagem para manipular interfaces, mas sim, para mostrar onde podemos ir com a linguagem.

O projeto consiste em uma espécie de middleware entre o PHP e o Lazarus Component Library (free Pascal). Basicamente você desenvolve um aplicativo utilizando o PHP e o Lazarus cria o binário. Sendo assim, não é necessário nenhuma extensão PHP para a criação da sua interface. Necessitando apenas do PHP 5.6 ou superior para rodarmos o projeto.

Abaixo uma imagem retirada do repositório oficial do projeto que explica um pouco como funciona.

Bem, vamos ver como ele funciona na prática.

Para criar um projeto com o php-gui basta criar uma nova pasta raiz para o projeto e utilizar o seguinte comando do composer.

composer require gabrielrcouto/php-gui

isso irá fazer com que o composer instale todas as dependências do projeto.

As classes mais importantes do projeto é a Application, que é responsável pela criação e execução da interface e as classes de Componentes (botões, textarea, checkbox, etc).

Para exemplificar, vamos criar uma tela que possui uma caixa de texto (que no caso é um cep) e um botão, e quando esse botão é clicado os dados referente ao cep que foi digitado aparecem na tela. Iremos utilizar a api do https://viacep.com.br/ para fazer as chamadas. E para exemplificar do modo mais simples, a requisição será efetuada por um file_get_contents() (não façam isso em casa 🙂 )

O código abaixo está comentado para melhor entendimento. No caso foi salvo como gui.php esse código, na pasta raiz do nosso projeto.

 

<?php

//autoload do composer

require 'vendor/autoload.php';



//use das classes que iremos utilizar

use Gui\Application;

use Gui\Components\Button;

use Gui\Components\InputText;

use Gui\Components\TextArea;



//instanciando a aplicação

$application = new Application();



//definindo o evento que é disparado quando a aplicação é iniciada (start)

$application->on('start', function() use ($application) {

//criando o botão

$button = (new Button())

   ->setLeft(110)

   ->setTop(10)

   ->setWidth(200)

   ->setValue('Pesquisar CEP!');

//criando o inputtext

$text = (new InputText())

   ->setLeft(10)

   ->setTop(10)

   ->setWidth(100);

//criando a textarea

$textArea = (new TextArea())

   ->setLeft(10)

   ->setTop(50)

   ->setWidth(300)

   ->setHeight(170);



// definindo o evento que é disparado quando o botão é pressionado

$button->on('click', function() use ($button,$text,$textArea) {

//retornando o valor do inputtext

   $cep = $text->getValue();

   //defininindo url de chamada do webservice

$url = 'https://viacep.com.br/ws/'.$cep.'/json/';

//retornando a chamada do webservice e convertendo o resultado de Json para objeto

   $result = json_decode(file_get_contents($url));

   //definindo o novo valor da textarea

   $textArea->setValue(

    'Cep: ' . $result->cep . PHP_EOL .

    'Logradouro: ' . $result->logradouro . PHP_EOL .

    'Complemento: ' . $result->complemento . PHP_EOL .

    'Bairro: ' . $result->bairro . PHP_EOL .

    'Localidade: ' . $result->localidade . PHP_EOL .

    'UF: ' . $result->uf

    );



   });

});



//rodando a aplicação

$application->run();

 

Então, basta dar um:

 

php gui.php

Dai é só digitar um cep sem hifen e clicar em “pesquisar cep”

Bem, espero que tenham gostado, dá para explorar legal os vários componentes do php-gui e o melhor é sempre entendermos até onde o PHP pode chegar. Até a próxima.