Back-End

11 mai, 2018

Criando gráficos de profundidade de objetos PHP com print_o

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!