Back-End

Back-End

Criando gráficos de profundidade de objetos PHP com print_o

11 mai, 2018
Publicidade

Fala, pessoal! Tudo bom?

Nos últimos artigos temos focado em mostrar bibliotecas PHP para implementarmos diversas funcionalidades em nossos sistemas. Algumas vezes eu acabo não conseguindo passar todo o conteúdo dos objetos gerados pelas bibliotecas. E no artigo de hoje, mostrarei a vocês uma biblioteca para gerar o gráfico de profundidade de um objeto PHP.

A biblioteca koriym/print_o – que parece ser escrita por alguém do Japão -, cria gráficos muito bons com os atributos, os métodos, e mais de uma instância de algum objeto PHP. Então, podemos acabar vendo como extrair melhor as funcionalidades de um objeto de uma biblioteca em específico.

Vamos ao código:

Criaremos uma pasta. No meu caso criei a “object”. Instalaremos a biblioteca em nosso projeto.

composer require koriym/printo

Para realizar os testes dos gráficos de objeto, irei utilizar uma instância de um objeto Guzzle. Para isso, vamos instalar o guzzle no projeto:

composer require guzzlehttp/guzzle

Agora, vamos criar o arquivo de exemplo first.php:

<?php

require_once 'vendor/autoload.php'; //autoload do Composer

use GuzzleHttp\Client; //utilizando a classe Client do GuzzleHttp
use Koriym\Printo\Printo; //utilizando a classe Printo do Koriym\Printo

$client = new Client(); //instanciando um Client do Guzzle

$res = $client->request('GET', 'https://google.com'); //realizando uma chamada get para o site do google

echo (new Printo($res)); //exibindo a imagem do objeto "chamada GET no site do google" pelo Guzzle

Então, vamos validar a imagem. Para isso, vamos ligar o servidor embutido PHP.

php -S localhost:80

E abra localhost/first.php.

O gráfico é muito bom, porém, às vezes acaba vindo informação de mais; então você pode definir algumas propriedades para melhor visualização do objeto. Vamos ao exemplo second.php:

<?php

require_once 'vendor/autoload.php'; //autoload do Composer

use GuzzleHttp\Client; //utilizando a classe Client do GuzzleHttp
use Koriym\Printo\Printo; //utilizando a classe Printo do 
Koriym\Printo

$client = new Client(); //instanciando um Client do Guzzle

$res = $client->request('GET', 'https://google.com'); 

//realizando uma chamada get para o site do google
echo (new Printo($res)) //exibindo a imagem do objeto "chamada GET no site do google" pelo Guzzle
    ->setRange(Printo::RANGE_PROPERTY) //tipo de dados do objeto que aparecerão, no caso as propriedades (atributos) do objeto
    ->setLinkDistance(130) //distancia da ligação de um item e outro dentro do gráfico
    ->setCharge(-500); //angulação do arco das imagens(distância de arco), quanto menor o número (por exemplo -1000) maior é a angulação

//caso queira ver todos os tipos de Range, só ver a documentação da classe: https://github.com/koriym/print_o/blob/1.x/src/Printo.php

E abrindo o localhost/second.php:

Espero que tenham gostado e possam estudar melhor as instâncias de objeto que vocês usam no dia a dia de desenvolvimento. Abraços e até a próxima!