✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Creación rápida de prototipos: de prototipo a código, parte 2

5

La publicación anterior demuestra mucho trabajo al tomar algo que alguna vez fue un prototipo rápido y convertir ese prototipo en código. Si no ha estado siguiendo, hemos hecho lo siguiente:

  1. habló y construyó un prototipo para un complemento,
  2. diagramado, un enfoque orientado a objetos puede funcionar,
  3. y refactorizamos nuestro prototipo al código real.

En este punto, hay algunas cosas más que podemos hacer para mejorar nuestro código. Es decir, podemos introducir el concepto de espacios de nombres. Esto lleva a la organización un paso más allá y puede pagar dividendos para proyectos más grandes.

Así que aquí hay un vistazo a cómo se desarrolla esto en nuestro proyecto actual.

Prototipo a código: espacios de nombres

He cubierto los espacios de nombres en profundidad en publicaciones anteriores. Si no lo has leído, te lo recomiendo. Luego regresa y mira el resto de la publicación.

Si opta por omitir el artículo, aquí hay una breve definición de un espacio de nombres :

Los espacios de nombres están diseñados para resolver dos problemas que encuentran los autores de bibliotecas y aplicaciones al crear elementos de código reutilizables, como clases o funciones…

Y la idea general es que organizamos nuestras clases en base a una relación lógica que tienen entre sí.

Además, también organizamos los archivos dentro de directorios que coinciden con el espacio de nombres. Esto no es algo que deba hacerse, pero creo que es útil tener las clases organizadas lógicamente en el disco de la forma en que están organizadas virtualmente en el espacio de nombres.

Dicho esto, organicemos los archivos.

Organizar los archivos

En lugar de comenzar con el archivo del complemento principal, comencemos organizando nuestros archivos primero.

  • Los archivos Meta Box y Meta Box Display residirán en un directorio llamado Display. Esto es completamente arbitrario, pero dado que eso es lo que hacen esos archivos, parece tener sentido que allí residan.
  • También podemos colocar los archivos message-description.php y no-post-list.php en ese directorio, pero colóquelos en un subdirectorio llamado Vistas. Es posible que desee llamar a esto Plantillas o Parciales o algo similar.
  • A continuación, tenemos las clases responsables de consultar la base de datos y la clase responsable de coordinar la mensajería. Coloquemos cada uno de estos en Utilidad. Hay otros lugares a los que podrían ir, claro, pero recuerde que el propósito es demostrar cómo usar los espacios de nombres. Entonces, si se siente tan inclinado, siéntase libre de ajustar sus archivos para que se adapten a sus gustos.

Si ha seguido lo que tenemos arriba, entonces debería tener una estructura de directorios que se vea así:

Una forma de organizar sus archivos.

Ahora es el momento de definir espacios de nombres para cada una de las clases. Dado que los hemos organizado todos en sus directorios, será fácil especificar un espacio de nombres; sin embargo, es importante reconocer que necesitaremos usar la  palabra clave use cuando usemos clases ubicadas en otros espacios de nombres.

Repasemos cada uno de nuestros archivos comenzando con los archivos en Utility. Primero, comenzaremos con Post Messenger :

Notará que el espacio de nombres del archivo aparece en el encabezado junto con una declaración para usar la  clase Post Query que creamos. He agregado el nombre de la clase al final del espacio de nombres, por lo que no tengo que usarlo en todo el código base.

Observe que el constructor ahora se ve así :

He agregado un  argumento $plugin_dir porque necesitamos usarlo para mostrar correctamente los resultados de la consulta. Y dado que ahora residen en un área diferente de la aplicación, las funciones se ven así :

A continuación, veamos la  clase Post Query. No ha cambiado mucho en esta clase, excepto que le hemos dado un espacio de nombres, y también hemos actualizado la consulta solo para retirar tres publicaciones (según este comentario ).

Observe en el código que también prefijé WP_Query con una barra inclinada porque es parte del espacio de nombres global.

Vayamos al  directorio Display y echemos un vistazo a la clase Meta Box. A esto también se le ha asignado un espacio de nombres y también está usando el nombre completo de la  clase Meta Box Display que veremos en un momento.

Tenga en cuenta que este constructor también acepta el directorio del complemento como argumento y lo pasa también a la  clase Meta Box Display. Esto es para que las funciones encargadas de mostrar los mensajes se puedan encontrar correctamente en su ubicación en el  directorio Vistas.

Finalmente, revisemos la  clase Meta Box Display. Esta es una clase simple que incluye el espacio de nombres y hace referencia al Post Messenger que hemos revisado anteriormente.

En este punto, hemos cerrado el círculo a través del complemento. Con una excepción: el archivo de arranque. Le hemos agregado un espacio de nombres y tenemos que actualizar la forma en que se instancia :

Es decir, hemos:

  • definió el espacio de nombres,
  • hacer referencia a la ubicación de la  clase Meta Box ,
  • actualizó las rutas para incluir dónde encontrar los archivos (que en última instancia se puede hacer con un cargador automático),
  • y actualizó la  llamada add_action.

Esto es lo que pasa con la llamada de acción de agregar: dado que WordPress necesita ubicar esta función y la función reside en un espacio de nombres, se debe identificar el nombre completo de la función para que WordPress pueda invocarla. De ahí la necesidad de NAMESPACE en el nombre de la función.

Ahora estamos organizados (con una excepción)

Como puede ver, los espacios de nombres y los directorios que coinciden con ellos agregan mucha organización a un proyecto. Es más fácil de seguir, más fácil de entender a dónde van las cosas (tanto para los archivos existentes como para los nuevos). Y da menos sensación acumular muchos archivos en un solo lugar.

Incluso si una clase es un poco monolítica, aún puede organizarse de tal manera que facilite el mantenimiento.

Dicho esto, todavía hay algo que cambiaría sobre este complemento: pasar el directorio del complemento de esta manera no es algo que ayude con la baja cohesión y une más estrechamente las clases porque el archivo de arranque tiene que pasar un valor en una clase que lo pasa a otra clase que lo usa para cargar archivos y así sucesivamente.

Entonces, ¿hay formas de arreglar esto? Absolutamente. Y tal vez le demos un vistazo a eso en la publicación final.

Hasta entonces, recuerde que la versión más reciente del complemento está disponible en la rama maestra, etiquetada como 0.3.0, en GitHub.

Publicaciones de la serie

  1. Creación rápida de prototipos con WordPress: del concepto al complemento
  2. Prototipos Rápidos con WordPress: Análisis de Concepto
  3. Creación rápida de prototipos: Prototipo a código, Parte 1
  4. Creación rápida de prototipos: de prototipo a código, parte 2
  5. Creación rápida de prototipos: Introducción a la carga automática

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More