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.