{"id":229783,"date":"2022-11-10T13:28:00","date_gmt":"2022-11-10T10:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229783"},"modified":"2022-11-10T13:28:32","modified_gmt":"2022-11-10T10:28:32","slug":"bibliotecas-para-plugins-do-wordpress-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/bibliotecas-para-plugins-do-wordpress-parte-1\/","title":{"rendered":"Bibliotecas para plugins do WordPress, parte 1"},"content":{"rendered":"\n<p>Quanto mais voc\u00ea trabalha com o WordPress, especialmente se voc\u00ea emprega ferramentas como o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> e similares, mais voc\u00ea provavelmente encontrar\u00e1 certas bibliotecas, ferramentas e coisas semelhantes que formam a base dos projetos nos quais voc\u00ea trabalha.<\/p>\n<p>\u00c0s vezes, voc\u00ea pode encontr\u00e1-los ao examinar o c\u00f3digo de outras pessoas, talvez voc\u00ea os encontre ao navegar no GitHub, ou talvez <a href=\"https:\/\/twitter.com\/tobyschrapel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">algu\u00e9m com quem<\/a> <a href=\"https:\/\/twitter.com\/twigpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">voc\u00ea<\/a> trabalha sugira uma biblioteca (ou algumas) dependendo de um projeto.<\/p>\n<p>Pessoalmente, tive a experi\u00eancia de todos os itens acima e, quanto mais trabalho na cria\u00e7\u00e3o de solu\u00e7\u00f5es para mim ou para outros, mais me vejo configurando a mesma base para cada projeto (que normalmente \u00e9 algum tipo de plug-in) .<\/p>\n<h2>Bibliotecas para plugins do WordPress<\/h2>\n<p>Para esse fim, achei que valeria a pena compartilhar as bibliotecas que uso ao criar plugins do WordPress. O conte\u00fado ser\u00e1 distribu\u00eddo em algumas postagens para manter cada uma curta e focada, mas talvez voc\u00ea encontre algo que n\u00e3o tenha usado anteriormente (ou que aprimore seu uso atual).<\/p>\n<h3><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnitName<\/a><\/h3>\n<p>Qualquer pessoa que tenha escrito qualquer c\u00f3digo em qualquer linguagem de programa\u00e7\u00e3o provavelmente est\u00e1 familiarizada com qualquer tipo de biblioteca *Unit. Em suma, \u00e9 uma maneira de escrever testes de unidade facilmente.<\/p>\n<p>Da <a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e1gina inicial do projeto<\/a> :<\/p>\n<blockquote>\n<p>PHPUnit \u00e9 uma estrutura de teste orientada ao programador para PHP. \u00c9 uma inst\u00e2ncia da arquitetura xUnit para estruturas de teste de unidade.<\/p>\n<\/blockquote>\n<p>Eu n\u00e3o sou algu\u00e9m que necessariamente assina 100% de cobertura de c\u00f3digo (e isso \u00e9 um t\u00f3pico para outro post), mas se voc\u00ea vai escrever testes de unidade, ent\u00e3o esta \u00e9 a biblioteca de fato para testar seu c\u00f3digo.<\/p>\n<h3><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/h3>\n<p>Ao longo deste ano, <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">o GrumPHP<\/a> tornou-se indiscutivelmente minha biblioteca favorita (embora tenha sido aprimorada por bibliotecas adicionais que cobrirei ao longo desta s\u00e9rie de posts).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78ddea0549.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-166075-61e78ddea0549.png\" alt=\"Bibliotecas para plugins do WordPress, parte 1\"><\/a><\/p>\n<p>J\u00e1 falei sobre isso em outros posts. Embora ele se descreva como uma &#8220;ferramenta de qualidade de c\u00f3digo&quot;, voc\u00ea realmente n\u00e3o pode deixar de ver os benef\u00edcios at\u00e9 conect\u00e1-lo para assistir seu c\u00f3digo antes de tentar envi\u00e1-lo para um reposit\u00f3rio.<\/p>\n<p>A descri\u00e7\u00e3o mais longa \u00e9:<\/p>\n<blockquote>\n<p>Se os testes falharem, voc\u00ea n\u00e3o poder\u00e1 confirmar suas altera\u00e7\u00f5es. Essa ferramenta \u00fatil n\u00e3o apenas melhorar\u00e1 sua base de c\u00f3digo, mas tamb\u00e9m ensinar\u00e1 seus colegas de trabalho a escrever um c\u00f3digo melhor seguindo as pr\u00e1ticas recomendadas que voc\u00ea determinou como equipe.<\/p>\n<\/blockquote>\n<p>E, assim como se voc\u00ea estivesse empregando qualquer monitor de <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/usando-os-psrs-versus-os-padroes-de-codificacao-do-wordpress\/\" title=\"padr\u00f5es de codifica\u00e7\u00e3o\">padr\u00f5es de codifica\u00e7\u00e3o<\/a> em seu IDE, essa \u00e9 uma daquelas coisas que podem ser frustrantes de usar no in\u00edcio.<\/p>\n<p>Mas \u00e0 medida que voc\u00ea aprende, fica mais f\u00e1cil saber o que vai sinalizar para que voc\u00ea comece automaticamente a escrever c\u00f3digo com um n\u00edvel mais alto de qualidade.<\/p>\n<h3><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/h3>\n<p><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a> (abrevia\u00e7\u00e3o de PHP Mess Detector) funciona bem em conjunto com o GrumPHP, pois pode processar seu c\u00f3digo antes de envi\u00e1-lo para um reposit\u00f3rio.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de324f34.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-166075-61e78de324f34.png\" alt=\"Bibliotecas para plugins do WordPress, parte 1\"><\/a><\/p>\n<p>O projeto se descreve como:<\/p>\n<blockquote>\n<p>\u00c9 preciso uma determinada base de c\u00f3digo-fonte PHP e procurar v\u00e1rios problemas potenciais nessa fonte.<\/p>\n<\/blockquote>\n<p>Tal como acontece com muitas bibliotecas semelhantes, esta em particular pode configurar um conjunto de regras para que voc\u00ea possa ativar e desativar facilmente as coisas com base no que voc\u00ea ou sua equipe preferir.<\/p>\n<h3><a href=\"https:\/\/github.com\/nikic\/PHP-Parser\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-Parser<\/a><\/h3>\n<p>A ideia de ter uma configura\u00e7\u00e3o de biblioteca de analisador PHP para analisar seu c\u00f3digo parece um pouco meta, certo? Quero dizer, voc\u00ea tem o tempo de execu\u00e7\u00e3o do PHP fazendo isso, e muitos IDEs fazem isso tamb\u00e9m, mas isso funciona de uma maneira um pouco diferente.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166075-61e78de6eec7f.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-166075-61e78de6eec7f.png\" alt=\"Bibliotecas para plugins do WordPress, parte 1\"><\/a><\/p>\n<p>Do reposit\u00f3rio:<\/p>\n<blockquote>\n<p>Este \u00e9 um analisador PHP 5.2 para PHP 7.1 escrito em PHP. Seu objetivo \u00e9 simplificar a an\u00e1lise e manipula\u00e7\u00e3o de c\u00f3digo est\u00e1tico.<\/p>\n<\/blockquote>\n<p>Para aqueles que est\u00e3o familiarizados com o funcionamento das linguagens de programa\u00e7\u00e3o (e, portanto, gram\u00e1ticas), a ideia de fazer <a href=\"https:\/\/en.wikipedia.org\/wiki\/Static_program_analysis\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">uma an\u00e1lise est\u00e1tica<\/a> no c\u00f3digo far\u00e1 sentido.<\/p>\n<p>Independentemente disso, esta \u00e9 mais uma biblioteca que ajuda a melhorar a qualidade do c\u00f3digo, reduzindo a complexidade do c\u00f3digo.<\/p>\n<h2>Mais por vir<\/h2>\n<p>No final da s\u00e9rie, compartilharei como incorporar tudo isso em um <code>composer.json<\/code>arquivo que voc\u00ea pode usar em seu projeto.<\/p>\n<p>Quando voc\u00ea est\u00e1 trabalhando em uma solu\u00e7\u00e3o para um cliente, pode ser necess\u00e1rio alterar as vers\u00f5es de cada uma dessas ferramentas, mas voc\u00ea descobrir\u00e1 que a maioria delas oferece suporte desde o PHP5.6 at\u00e9 o PHP7.1.<\/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>O primeiro post de uma s\u00e9rie sobre as bibliotecas de plugins do WordPress que minha equipe e eu usamos ao trabalhar em solu\u00e7\u00f5es de alta qualidade para outras pessoas.<\/p>\n","protected":false},"author":1,"featured_media":166076,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[722,920,1021,867],"tags":[1170],"class_list":["post-229783","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-outro","category-sites-uteis","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229783","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=229783"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229783\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/166076"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}