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!




