{"id":232119,"date":"2023-01-07T11:34:00","date_gmt":"2023-01-07T08:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232119"},"modified":"2023-01-07T11:45:53","modified_gmt":"2023-01-07T08:45:53","slug":"depurando-wordpress-com-ray-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/depurando-wordpress-com-ray-parte-1\/","title":{"rendered":"Depurando WordPress com Ray, Parte 1"},"content":{"rendered":"\n<p><strong>TL;DR:<\/strong> Este post fornece uma vis\u00e3o geral de alto n\u00edvel de que tipo de aplicativo <a href=\"https:\/\/myray.app\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ray<\/a> \u00e9 e como configur\u00e1-lo para uso no WordPress.<\/p>\n<hr \/>\n<p>Desde que estou envolvido com o desenvolvimento do WordPress, tenho visto consistentemente desenvolvedores \u2013 inclusive eu \u2013 usar consistentemente <code>[print_r](https:\/\/www.php.net\/manual\/en\/function.print-r.php)<\/code>e <code>[var_dump](https:\/\/www.php.net\/manual\/en\/function.var-dump.php)<\/code>sempre que precisam ver o que est\u00e1 acontecendo em seu c\u00f3digo.<\/p>\n<p>E isso \u00e9 bom para estruturas de dados menores, como olhares para objetos, matrizes e assim por diante. Ent\u00e3o, na outra extremidade do espectro de depura\u00e7\u00e3o, se voc\u00ea precisar percorrer o c\u00f3digo para ver quais argumentos est\u00e3o sendo passados \u200b\u200bpara uma determinada fun\u00e7\u00e3o de onde e com qual valor, usar algo como <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/instalando-o-xdebug-parte-1-o-modulo-xdebug\/\" title=\"Xdebug\">Xdebug<\/a> \u00e9 incrivelmente \u00fatil.<\/p>\n<p>At\u00e9 recentemente, eu n\u00e3o achava que havia um meio-termo. Mas ent\u00e3o eu encontrei Ray e tenho usado desde ent\u00e3o.<\/p>\n<h2>Depurando WordPress com Ray, Parte 1<\/h2>\n<h3>O que \u00e9 Raio?<\/h3>\n<p>Antes de falar sobre depura\u00e7\u00e3o do WordPress com Ray, vale a pena entender o que Ray \u00e9 e o que n\u00e3o \u00e9.<\/p>\n<p>A primeira \u00e9 que n\u00e3o \u00e9 algo exclusivamente WordPress, ent\u00e3o se voc\u00ea se deparou com este post como outra pessoa na comunidade PHP mais ampla, \u00e9 algo que ainda est\u00e1 funcionando.<\/p>\n<p>Com isso dito, vamos supor que voc\u00ea seja um desenvolvedor baseado em WordPress e queira aprender mais sobre o que \u00e9 o Ray.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dbfceb3ea.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dbfceb3ea.png\" alt=\"Depurando WordPress com Ray, Parte 1\"><\/a><\/p>\n<p>Primeiro, embora forne\u00e7a um exemplo elegante de como seu c\u00f3digo se parece quando despejado em uma tela, ele oferece muito mais.<\/p>\n<p>Observe que, ao usar o Ray, voc\u00ea precisar\u00e1 de algumas ferramentas adicionais, que abordarei um pouco mais em um momento, mas se voc\u00ea quiser continuar a despejar informa\u00e7\u00f5es em um formato usando algo semelhante a <code>var_dump<\/code>, o Ray oferece suporte a isso. S\u00f3 faz parecer mais bonito. \ud83d\ude42<\/p>\n<p>Em segundo lugar, quando voc\u00ea invoca o Ray de dentro do seu c\u00f3digo, ele garante que voc\u00ea saiba de onde a chamada est\u00e1 vindo. Dessa forma, voc\u00ea sabe exatamente qual arquivo e em qual linha est\u00e1 olhando. Isso \u00e9 \u00fatil especialmente quando voc\u00ea tem v\u00e1rias chamadas.<\/p>\n<p>Terceiro, voc\u00ea pode realmente pausar a execu\u00e7\u00e3o do seu c\u00f3digo como faz sempre que est\u00e1 usando um depurador real. Isso significa que uma vez que ele atinge um certo ponto em seu c\u00f3digo (e isso \u00e9 \u00fatil se voc\u00ea estiver atingindo uma <code>switch<\/code>condi\u00e7\u00e3o ou <code>if<\/code>condi\u00e7\u00e3o ou se estiver usando, digamos, uma f\u00e1brica em programa\u00e7\u00e3o orientada a objetos e quiser saber qual inst\u00e2ncia de um objeto foi instanciado), ent\u00e3o voc\u00ea pode interromper a execu\u00e7\u00e3o e ter uma no\u00e7\u00e3o melhor do que est\u00e1 acontecendo com seu projeto.<\/p>\n<p>Finalmente, voc\u00ea pode organizar os tipos de sa\u00edda em v\u00e1rias cores. Isso significa que, se voc\u00ea atingir uma determinada ramifica\u00e7\u00e3o no c\u00f3digo e n\u00e3o quiser atingir essa ramifica\u00e7\u00e3o, poder\u00e1 categoriz\u00e1-la como vermelha. Da mesma forma, voc\u00ea pode fazer o mesmo com verde, laranja, roxo e muito mais. Realmente depende de voc\u00ea e do que voc\u00ea pretende alcan\u00e7ar observando seus dados.<\/p>\n<h2>Usando Ray no WordPres<\/h2>\n<p>Se voc\u00ea <a href=\"https:\/\/spatie.be\/docs\/ray\/v1\/installation-in-your-project\/wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ler os documentos<\/a> para instalar o Ray no WordPress, pode parecer um pouco intimidador (especialmente dependendo da sua experi\u00eancia com a CLI, com o Git e com plugins obrigat\u00f3rios).<\/p>\n<p>O bom \u00e9 que n\u00e3o precisa ser assim. Em vez disso, voc\u00ea pode pegar o WordPress Ray Plugin do reposit\u00f3rio de plugins (do <a href=\"https:\/\/wordpress.org\/plugins\/spatie-ray\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">site<\/a> ou de dentro do WordPress, dependendo de suas permiss\u00f5es).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc022fcee.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc022fcee.png\" alt=\"Depurando WordPress com Ray, Parte 1\"><\/a><\/p>\n<p>Depois que o plug-in for instalado, voc\u00ea poder\u00e1 come\u00e7ar imediatamente a despejar informa\u00e7\u00f5es no Ray.<\/p>\n<h3>Usando Git e Composer<\/h3>\n<p>Se voc\u00ea optar por usar o Git e o Composer, certifique-se de que essas duas ferramentas estejam instaladas em seu sistema e fa\u00e7a o seguinte.<\/p>\n<p>Primeiro, clone o reposit\u00f3rio em seu <code>mu-plugins<\/code>diret\u00f3rio emitindo o seguinte comando:<\/p>\n<p>$<code>git clone git@github.com:spatie\/wordpress-ray<\/code><\/p>\n<p>Em seguida, navegue at\u00e9 esse diret\u00f3rio em seu terminal e execute:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>Quando esse processo terminar, abra <code>wp-config.php<\/code>e adicione as duas linhas a seguir:<\/p>\n<p><code>require_once ABSPATH. 'wp-content\/mu-plugins\/wordpress-ray\/wp-ray.php';<\/code><\/p>\n<p><code>define( 'WP_ENVIRONMENT_TYPE', 'local' );<\/code><\/p>\n<p>Depois disso, voc\u00ea pode come\u00e7ar a usar a <code>ray<\/code>fun\u00e7\u00e3o em seu c\u00f3digo. Por exemplo, tenho a seguinte linha de c\u00f3digo em execu\u00e7\u00e3o em um modelo que estou usando como demonstra\u00e7\u00e3o para este artigo:<\/p>\n<p><code>&lt;?php ray( wp_get_current_user() ); ?&gt;<\/code><\/p>\n<p>Ent\u00e3o, sempre que esta p\u00e1gina for carregada, o aplicativo Ray exibir\u00e1 o seguinte:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc060b535.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158304-61e6dc060b535.png\" alt=\"Depurando WordPress com Ray, Parte 1\"><\/a><\/p>\n<p>Esta \u00e9 obviamente uma informa\u00e7\u00e3o rica \u2013 informa\u00e7\u00e3o que ainda pode ser lida por outros meios \u2013 mas de uma forma muito mais elegante.<\/p>\n<h2>Para a Parte 2<\/h2>\n<p>Na Parte 2 da s\u00e9rie, abordarei como come\u00e7ar a depurar c\u00f3digo usando o Ray e por que gosto de usar o aplicativo como meio termo entre algo <code>[var_dump](https:\/\/www.php.net\/manual\/es\/function.var-dump.php)<\/code>como <a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a>.<\/p>\n<p>Al\u00e9m disso, vou passar por alguns dos recursos espec\u00edficos do WordPress do Ray para que voc\u00ea possa ver como isso \u00e9 mais do que &#8220;uma maneira bonita de despejar vari\u00e1veis&quot;.<\/p>\n<p>Em \u00faltima an\u00e1lise, acho que o Xdebug ainda \u00e9 algo que deve ser usado, mas Ray \u00e9 um meio-termo muito mais agrad\u00e1vel que fornece muita funcionalidade de depura\u00e7\u00e3o s\u00f3lida sem precisar do suporte completo de um depurador verdadeiro.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta \u00e9 uma introdu\u00e7\u00e3o de alto n\u00edvel sobre como come\u00e7ar a depurar o WordPress com Ray.<\/p>\n","protected":false},"author":1,"featured_media":158305,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,753,722,837,806,785,846,867],"tags":[1170],"class_list":["post-232119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-codigo-aberto","category-desenvolvedor","category-guia-para-iniciantes","category-php-8","category-software-livre","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232119"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232119\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/158305"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}