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

Consultas de base de datos para actualizar datos rápidamente, parte 2

16

Esta es la segunda y última parte de una serie sobre, como sugiere el título, consultas directas a bases de datos. Específicamente, se trata de cambiar los estados de las publicaciones (pero es relevante para más que eso).

Foto de Ross Findon en Unsplash

De la publicación anterior:

Esta es otra publicación más que será una ilustración de cómo usar $wpdb para actualizar rápidamente la información basada en metadatos.

Y el código provisto en esa publicación funciona, pero si está buscando hacerlo más orientado a objetos, entonces se puede hacer más trabajo.

Sin embargo, antes de saltar a la publicación real, es importante tener en cuenta que cuando se trata de programación orientada a objetos, hay mucho trabajo que se puede dedicar al diseño de la clase y la creación de niveles de abstracción.

En algún momento, tiene que trazar la línea proverbial entre cuándo va a usar interfaces, qué tan granulares van a ser sus clases en términos de lo que están abstrayendo, y cosas por el estilo.

Y el propósito de esta publicación es ayudar a proporcionar un mejor diseño orientado a objetos, pero no es un ejercicio, es hacer que esto sea lo más óptimo posible. Hablo de temas como este en otra serie de publicaciones.

Pero tenga eso en cuenta cuando lea el código en el resto de la publicación.

Consultas de base de datos para actualizar datos rápidamente, parte 2

Dado donde lo dejamos, tenemos una sola función que hace lo siguiente:

  1. recuperar todas las publicaciones asociadas con una clave meta específica,
  2. determinar si necesitamos salir temprano,
  3. actualizar el estado de publicación de cualquier publicación existente.

Lo primero que debe tener en cuenta es que una sola función es demasiado, por lo que debe dividirse en varias otras funciones. Y dado que está orientado a objetos, debemos asegurarnos de que lo que sea que esté haciendo una función no se base necesariamente en pasos anteriores; de eso se trata precisamente la programación procedimental.

En su lugar, aprovecharemos esta oportunidad para configurar funciones, de modo que operen con cualquier dato que se les pase, independientemente de cómo llegaron allí.

Finalmente, depende de usted, como desarrollador, determinar si desea tener una sola clase para hacer esto, más de una clase o tener un conjunto de clases relacionadas que heredan de una clase principal.

Nuevamente, se trata de qué tan abstracto desea hacer el código.

Por ahora, sin embargo, sigamos adelante con la separación.

1 Tome las ID de publicación con la clave meta asociada

Al igual que en la primera publicación, queremos asegurarnos de que estamos recuperando los ID de publicación que están relacionados con una clave meta específica.

En aras de hacer que esta función sea lo más flexible posible, la configuraremos para:

  • aceptar la clave meta como una cadena,
  • devolver una matriz

La función entonces se verá algo como esto:

En la primera publicación, dividimos esto en tres pasos (que también se describen arriba). Aquí, sin embargo, podemos combinar el segundo y el tercer paso en una sola función.

2 Actualizar el estado de la publicación

Como mencioné, el único aspecto de la programación orientada a objetos es asegurarse de que las funciones que estamos usando sean independientes de cómo se generaron los datos que están recibiendo.

En su lugar, tienen un solo algoritmo para ejecutar para centrarse en los datos que se pasan a la función. En este caso, queremos tomar el conjunto de resultados, que son ID de publicación, y actualizar su estado de publicación para que esté configurado como borrador.

Esto significa que la función aceptará una matriz pero no devolverá nada. Potencialmente, podría hacer que realice un seguimiento de muchas publicaciones que actualizó (o si actualizó algo), pero estoy enfocado en refactorizar el código que ya tenemos.

Así que eso es lo que vamos a hacer. Y lo primero es asegurarse de que haya datos reales con los que trabajar. Y si es así, itere a través de la lista de ID de publicación y cambie su estado de publicación:

Puede ver que no es muy diferente del trabajo que se realizó en la primera publicación, pero ahora plantea algunas preguntas.

3 Consideraciones orientadas a objetos

Cuando se trabaja con código como este:

  • ¿Pertenece todo a la misma clase oa clases separadas?
  • ¿Debería haber una clase base y, de ser así, por qué o por qué no?
  • ¿Debería invocarse una sola función pública que llame a estos métodos (y marcarlos como privados)?
  • ¿Deberíamos dejar las funciones públicas?

Para esta publicación, voy a hacer lo siguiente:

  • Exponga cada función como un método público. Esto es para que si se devuelven datos del primer método, potencialmente podría hacer algo más con ellos.
  • Manténgalo contenido en una sola clase. De esta manera, podemos instanciar una sola clase y luego usarla para hacer cualquier trabajo que necesitemos hacer. Si hubiera otros métodos, usaríamos esos mismos métodos.
  • Comience con la interfaz. No me voy a molestar en escribir una interfaz con el único propósito de mostrar una interfaz (supongo que es bastante fácil de deducir dadas las funciones que tenemos ahora), pero voy a tomar la clase y mostrar cómo podemos invocar el funciona "de afuera hacia adentro".

Así que voy a empezar con el último punto y trabajar hacia atrás. Aquí hay una forma en que puede trabajar con el código:

Y luego, así es como se ve toda la clase :

En términos generales, servirá para los mismos propósitos que el primero, pero de una manera más orientada a objetos.

ese no es el camino

Como he intentado reiterar varias veces a través de esta publicación, esta no es la forma definitiva de hacer este trabajo. En cambio, es una forma en que se puede hacer el trabajo.

Puede rediseñar, refactorizar o reutilizar esto como mejor le parezca. Sin embargo, el propósito es mostrar cómo desacoplar la lógica que normalmente vemos como procedimental en algo que sea un poco menos dependiente de sí mismo y deje espacio para trabajo adicional.

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