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.








