{"id":229369,"date":"2022-11-10T13:30:00","date_gmt":"2022-11-10T10:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229369"},"modified":"2022-11-10T13:40:36","modified_gmt":"2022-11-10T10:40:36","slug":"bibliotecas-para-plugins-de-wordpress-parte-2","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/bibliotecas-para-plugins-de-wordpress-parte-2\/","title":{"rendered":"Bibliotecas para plugins de WordPress, Parte 2"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/es\/bibliotecas-para-plugins-de-wordpress-parte-1\/\" title=\"Ayer\">Ayer<\/a>, comenc\u00e9 una breve serie de publicaciones sobre herramientas que creo que permiten escribir c\u00f3digo de alta calidad en un proyecto de WordPress (espec\u00edficamente aquellos que son complementos creados con un enfoque orientado a objetos).<\/p>\n<p>Si no ha le\u00eddo la publicaci\u00f3n, el primer conjunto de herramientas mencionado es el siguiente:<\/p>\n<ul>\n<li><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Unidad PHP<\/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>Hay unas cinco herramientas m\u00e1s que me gusta seguir ejecutando en mis proyectos. As\u00ed que aqu\u00ed est\u00e1n los pr\u00f3ximos tres con los dos \u00faltimos en la pr\u00f3xima publicaci\u00f3n.<\/p>\n<h2>Bibliotecas para complementos de WordPress, continuaci\u00f3n<\/h2>\n<p>Como se mencion\u00f3 anteriormente, estas herramientas me parecen \u00fatiles siempre que trabajo en complementos de WordPress orientados a objetos. Adem\u00e1s, estos se distribuyen naturalmente en algunas publicaciones para que cada uno sea breve y enfocado.<\/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>Si ha estado leyendo este blog durante alg\u00fan tiempo, es probable que haya le\u00eddo una publicaci\u00f3n o al menos haya mencionado algo sobre <a href=\"https:\/\/github.com\/squizlabs\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP CodeSniffer<\/a>. Esto es algo que creo, al menos, que todo desarrollador de WordPress deber\u00eda haber instalado en su IDE.<\/p>\n<p>Desde la p\u00e1gina del repositorio del proyecto:<\/p>\n<blockquote>\n<p>PHP_CodeSniffer tokeniza archivos PHP, JavaScript y CSS y detecta violaciones de un conjunto definido de est\u00e1ndares de codificaci\u00f3n.<\/p>\n<\/blockquote>\n<p>Ahora, con respecto a las reglas, eso es otra cosa. Algunas personas prefieren los <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">est\u00e1ndares de codificaci\u00f3n de WordPress<\/a> ; algunos prefieren <a href=\"https:\/\/wordpress.mediadoma.com\/es\/uso-de-los-psr-frente-a-los-estandares-de-codificacion-de-wordpress\/\" title=\"PSR2\">PSR2<\/a>, otros prefieren otros conjuntos de reglas. No se trata tanto de lo que prefieras, siempre y cuando t\u00fa o tu equipo sean consistentes.<\/p>\n<p>Y eso es lo que esta biblioteca en particular te ayuda a hacer. Adem\u00e1s, no est\u00e1 de m\u00e1s que puedas integrarlo en tu IDE (suponiendo que sea uno de los editores m\u00e1s 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 es una biblioteca simple que analiza su c\u00f3digo para detectar c\u00f3digo duplicado, que generalmente proviene de haber sido copiado y pegado desde otro lugar (incluso si es su base de c\u00f3digo). La idea detr\u00e1s de la biblioteca es reducir el c\u00f3digo duplicado.<\/p>\n<\/p>\n<p>Y no hay nada m\u00e1s claro <a href=\"https:\/\/github.com\/sebastianbergmann\/phpcpd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">que esto<\/a> :<\/p>\n<blockquote>\n<p>phpcpd es un detector de copiar\/pegar (CPD) para c\u00f3digo PHP.<\/p>\n<\/blockquote>\n<p>En otras palabras, es un paso para ayudarte a mantenerlo 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>Si uno de los objetivos por los que nos esforzamos en nuestro c\u00f3digo es hacerlo lo m\u00e1s legible posible para otros que puedan tomar la base del c\u00f3digo, bifurcarlo o contribuir a \u00e9l (especialmente en c\u00f3digo abierto), entonces debemos asegurarnos de que todos de nuestros valores tienen 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 de WordPress, Parte 2\"><\/a><\/p>\n<p>Usar n\u00fameros que sean significativos para nosotros pero que no describan qu\u00e9 es lo que est\u00e1 haciendo el c\u00f3digo es importante, pero no es algo que hagamos, \u00bfverdad? O tal vez solo soy yo.<\/p>\n<p>Pero ah\u00ed es donde entra en juego <a href=\"https:\/\/github.com\/povils\/phpmnd\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMND<\/a>.<\/p>\n<blockquote>\n<p>phpmnd es una herramienta que te ayuda a detectar n\u00fameros m\u00e1gicos en c\u00f3digo PHP. Por defecto, el 0 y el 1 no se consideran n\u00fameros m\u00e1gicos.<\/p>\n<\/blockquote>\n<p>Es una biblioteca simple, pero se usa junto con las bibliotecas de esta publicaci\u00f3n, y la publicaci\u00f3n anterior puede ayudarlo a aumentar continuamente la calidad del c\u00f3digo que est\u00e1 contribuyendo a sus repositorios.<\/p>\n<h2>Un conjunto m\u00e1s de herramientas<\/h2>\n<p>Como mencion\u00e9 en la publicaci\u00f3n anterior, el objetivo con el que estoy trabajando es c\u00f3mo incorporar todo esto en un <code>composer.json<\/code>archivo que pueda usar en su proyecto.<\/p>\n<p>Recuerde tambi\u00e9n que, seg\u00fan el proyecto, es posible que deba seleccionar una versi\u00f3n de la biblioteca seg\u00fan la versi\u00f3n de PHP que est\u00e9 utilizando.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La segunda publicaci\u00f3n de una serie sobre las bibliotecas para complementos de WordPress que mi equipo y yo usamos cuando trabajamos en soluciones de alta calidad para otros.<\/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":[716,1015],"tags":[1172],"class_list":["post-229369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-sitios-utiles","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229369"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229369\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/166045"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}