{"id":229792,"date":"2022-11-10T13:34:00","date_gmt":"2022-11-10T10:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229792"},"modified":"2022-11-10T13:40:37","modified_gmt":"2022-11-10T10:40:37","slug":"bibliotecas-para-plugins-do-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/bibliotecas-para-plugins-do-wordpress-parte-2\/","title":{"rendered":"Bibliotecas para plugins do WordPress, parte 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/bibliotecas-para-plugins-do-wordpress-parte-1\/\" title=\"Ontem\">Ontem<\/a>, eu comecei uma pequena s\u00e9rie de posts cobrindo ferramentas que eu acho que fazem para escrever c\u00f3digo de alta qualidade em um projeto WordPress (especificamente aqueles que s\u00e3o plugins constru\u00eddos usando uma abordagem orientada a objetos).<\/p>\n<p>Se voc\u00ea n\u00e3o leu o post, o primeiro conjunto de ferramentas mencionado \u00e9 o seguinte:<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnitName<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/li>\n<li><a href=\"https:\/\/phpmd.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMD<\/a><\/li>\n<\/ul>\n<p>Existem cerca de mais cinco ferramentas que eu gosto de manter em execu\u00e7\u00e3o em meus projetos. Ent\u00e3o aqui est\u00e3o os pr\u00f3ximos tr\u00eas com os dois finais vindo no pr\u00f3ximo post.<\/p>\n<h2>Bibliotecas para plugins do WordPress, continua\u00e7\u00e3o<\/h2>\n<p>Como mencionado anteriormente, acho essas ferramentas \u00fateis sempre que estou trabalhando em plugins WordPress orientados a objetos. Al\u00e9m disso, eles s\u00e3o naturalmente espalhados por alguns posts para manter cada um curto e focado.<\/p>\n<h3><a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a><\/h3>\n<p>Se voc\u00ea est\u00e1 lendo este blog h\u00e1 algum tempo, provavelmente j\u00e1 leu um post ou pelo menos mencionou algo sobre <a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a>. Isso \u00e9 algo que eu acho que, se nada mais, todo desenvolvedor WordPress deveria ter instalado em seu IDE.<\/p>\n<p>Na p\u00e1gina do reposit\u00f3rio do projeto:<\/p>\n<blockquote>\n<p>PHP_CodeSniffer tokeniza arquivos PHP, JavaScript e CSS e detecta viola\u00e7\u00f5es de um conjunto definido de padr\u00f5es de codifica\u00e7\u00e3o.<\/p>\n<\/blockquote>\n<p>Agora, em rela\u00e7\u00e3o \u00e0s regras, isso \u00e9 uma coisa diferente. Algumas pessoas preferem os <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Padr\u00f5es de Codifica\u00e7\u00e3o do WordPress<\/a> ; alguns preferem <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/usando-os-psrs-versus-os-padroes-de-codificacao-do-wordpress\/\" title=\"PSR2\">PSR2<\/a>, alguns preferem outros conjuntos de regras. N\u00e3o \u00e9 tanto sobre o que voc\u00ea prefere, desde que voc\u00ea ou sua equipe sejam consistentes.<\/p>\n<p>E \u00e9 isso que essa biblioteca espec\u00edfica ajuda voc\u00ea a fazer. Al\u00e9m disso, n\u00e3o faz mal que voc\u00ea possa integr\u00e1-lo ao seu IDE (supondo que seja um dos editores mais populares).<\/p>\n<h3><a href=\"https:\/\/github.com\/sebastianbergmann\/phpcpd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPCPD<\/a><\/h3>\n<p>PHPCPD \u00e9 uma biblioteca simples que analisa seu c\u00f3digo para detectar c\u00f3digo duplicado \u2013 que geralmente vem de ser copiado e colado de outro lugar (mesmo que seja sua base de c\u00f3digo). A ideia por tr\u00e1s da biblioteca \u00e9 reduzir o c\u00f3digo duplicado.<\/p>\n<\/p>\n<p>E n\u00e3o fica muito mais claro <a href=\"https:\/\/github.com\/sebastianbergmann\/phpcpd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">do que isso<\/a> :<\/p>\n<blockquote>\n<p>phpcpd \u00e9 um Detector de Copiar\/Colar (CPD) para c\u00f3digo PHP.<\/p>\n<\/blockquote>\n<p>Em outras palavras, \u00e9 um passo para ajud\u00e1-lo a mant\u00ea-lo SECO.<\/p>\n<h3><a href=\"https:\/\/github.com\/povils\/phpmnd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMND<\/a><\/h3>\n<p>Se um dos objetivos que buscamos em nosso c\u00f3digo \u00e9 torn\u00e1-lo o mais leg\u00edvel poss\u00edvel por outras pessoas que possam pegar a base de c\u00f3digo, bifurc\u00e1-la ou contribuir com ela (especialmente em c\u00f3digo aberto), ent\u00e3o precisamos ter certeza de que todos dos nossos valores t\u00eam valores significativos.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166044-61e78d8e8d7a0.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-166044-61e78d8e8d7a0.png\" alt=\"Bibliotecas para plugins do WordPress, parte 2\"><\/a><\/p>\n<p>Usar n\u00fameros que s\u00e3o significativos para n\u00f3s, mas n\u00e3o descrevem o que o c\u00f3digo est\u00e1 fazendo \u00e9 importante, mas n\u00e3o \u00e9 algo que fazemos, certo? Ou talvez seja s\u00f3 eu.<\/p>\n<p>Mas \u00e9 a\u00ed que o <a href=\"https:\/\/github.com\/povils\/phpmnd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMND<\/a> entra em cena.<\/p>\n<blockquote>\n<p>phpmnd \u00e9 uma ferramenta que ajuda a detectar n\u00fameros m\u00e1gicos no c\u00f3digo PHP. Por padr\u00e3o, 0 e 1 n\u00e3o s\u00e3o considerados n\u00fameros m\u00e1gicos.<\/p>\n<\/blockquote>\n<p>\u00c9 uma biblioteca simples, mas usada em conjunto com as bibliotecas deste post, e o post anterior pode ajudar a aumentar continuamente a qualidade do c\u00f3digo que voc\u00ea est\u00e1 contribuindo para seus reposit\u00f3rios.<\/p>\n<h2>Mais um conjunto de ferramentas<\/h2>\n<p>Conforme mencionado no post anterior, o objetivo com o qual estou trabalhando \u00e9 como incorporar tudo isso em um <code>composer.json<\/code>arquivo que voc\u00ea possa usar em seu projeto.<\/p>\n<p>Lembre-se tamb\u00e9m que, dependendo do projeto, pode ser necess\u00e1rio selecionar uma vers\u00e3o da biblioteca com base na vers\u00e3o do PHP que voc\u00ea est\u00e1 usando.<\/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 segundo 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":166045,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[722,1021],"tags":[1170],"class_list":["post-229792","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-sites-uteis","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229792","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=229792"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229792\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/166045"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}