¿Debería usar objetos de desarrollo de WordPress?

Últimamente, he escrito en general sobre objetos orientados a PHP, desde herencia y visibilidad de clase, hasta modelos de diseño y métodos mágicos. En todas estas discusiones, hablamos sobre clases sin considerar las interfaces de los objetos. Las interfaces, a menudo llamadas contratos o acuerdos, establecen reglas para las clases en las que una clase que implementa una interfaz debe cumplir con esas reglas específicas. Las interfaces ponen restricciones en sus cursos que mejoran su código. En este artículo, discutiré cuáles son las interfaces y qué pueden y lo que no pueden hacer. Al final, podrá ver si debe usar interfaces para mejorar su código.
¿Cuáles son exactamente las interfaces? Las interfaces describen el método o métodos de poder por la clase específica que las implementa. No describe de ninguna manera lo que harán esos métodos, porque todos los métodos definidos en una interfaz deben ser públicos. Cuando comencé a trabajar con interfaces, a menudo me molestaba que no podía declarar un método protegido o privado en una interfaz. Esta fue una señal de que me perdí el punto de interfaz. Si escribo una clase para actuar como un objeto de una clase que implementa una interfaz, pueden identificar sus métodos y firmas públicas. Aquí hay un ejemplo rápido de los formularios de caldera, una interfaz que nuestros procesadores de pagos deben implementar.
interfaz caldera_forms_processor_interface_payment {
/**
* Hacer el pago
*
* @in 1.3.5.3
*
* @Param array $ config procesador
* @param array $ form config
* @param cadena $ Proccesid ID único para esta instancia del procesador
* @param caldera_forms_processor_get_data $ dat_object Data del procesador
*
* @return caldera_forms_processor_get_data*/
Función pública do_payment (array $ config, array $ form, $ proccesid, caldera_forms_processor_get_data $ dat_object);
} Puedo implementar esta interfaz para Stripe, PayPal o cualquier otro procesador de pago y sé que para activar el pago, se utilizará este método. Aunque el pago se procesará de manera diferente, es completamente bueno, porque la interfaz no describe cómo funciona un método, describe qué método hace qué.
Argumentos y tipos de retorno Al crear un método en una interfaz, no agregue un cuerpo a la función. En cambio, defina su nombre y argumentos. La clase que implementa esta interfaz debe usar exactamente los mismos argumentos, incluidos los valores definidos de la interfaz definida. Los métodos en una interfaz pueden usar indicaciones de tipo. Si lo hago, la clase que los implementa debe usar indicaciones del mismo tipo. Por ejemplo, tenemos una interfaz en los formularios de caldera para la implementación de procesadores de formulación. Mire el primer método en esta interfaz: la función pública pre_processor (matriz $ config, formularios de matriz, $ proccesid); Una clase que implementa esta interfaz debe funcionar con una matriz transmitida a los dos primeros argumentos. Si no se puede escribir una clase de esta manera, entonces no debe usar esta interfaz.
Si observa la fuente de la interfaz, notará que hay un método llamado campos. Devuelve una matriz, pero debido a que PHP5 no tiene una declaración de retorno, esta es una convención, no una regla. Si escribo esa interfaz sabiendo que se usará solo en PHP7, agregaría un tipo de retorno como este: Public Function Fields (): Matrix; La combinación de interfaces interfaces, como las clases, se pueden combinar con otras interfaces y heredar sus métodos. Esto es genial porque le permite crear interfaces simples y reunirlas para proyectos más grandes. Anteriormente le mostré una interfaz en formularios de caldera para procesadores de formulación. Tenemos otra interfaz especial para procesadores que agregan suscriptores a boletines informativos. Esta interfaz hereda la interfaz del procesador principal, pero agrega un método adicional. Los procesadores de anuncios informativos necesitan los métodos básicos del procesador y un método de suscripción. La interfaz es combinar más interfaces sin duplicar el código. En algunos casos. También es posible en PHP 5.3.9 o en una versión posterior, como clase para implementar más interfaces. La sintaxis utiliza una coma entre los nombres de las interfaces. Aquí hay un ejemplo de declarar una clase de controlador para usar con el enrutador Symony que he usado recientemente: el usuario implementa ServiceProviderInteface, BotableProviderIntef {el usuario de mi clase debe cumplir con las reglas de ambas interfaces. Hacer una interfaz que se expandiera ambos habría sido desordenada y no daría ningún beneficio real, por lo que solo usé la sintaxis de coma para implementar ambas interfaces.
Las constantes de la interfaz hasta ahora solo han discutido los métodos en una interfaz. Además, las interfaces pueden definir la clase constante. Tenga en cuenta que cuando implementa o hereda una interfaz, el valor de sus constantes no se puede modificar. Las constantes de la interfaz no son una característica que veo a menudo utilizada. Un uso de las constantes de la interfaz es la definición de un slog de complemento. Los desarrolladores de WordPress, incluido yo, a menudo usan la herencia de clase para definir una propiedad de babosa de complemento y lo usan como manijas de JavaScript o CSS y babosa de la página del menú. Eliminar el código repetitivo y tener un solo lugar para hacer un cambio, es genial. Pero, solo, esta no es una gran razón para expandir una clase básica. Una interfaz puede resolver el mismo problema sin crear la necesidad de seguir una jerarquía de herencia de clase que no sea necesaria. Por ejemplo: administrador de interfaz {

const slug = “mi complemento”
} ¿Deberías usar interfaces con objetos? Una de las principales ventajas de las interfaces es que agrega reglas a su programa que de otro modo podrían aplicarse por convención. En mi opinión, las interfaces son como las abstracciones de las bases de datos. Ninguno es necesario, pero cuanto antes se administre, cuanto más fácil se administre su proyecto y será más fácil cambiar la forma en que funciona.
Los complementos de WordPress a menudo se escriben con la idea de que se necesitarán complementos adicionales. Con demasiada frecuencia tenemos convenciones para lo que deberían hacer esos suplementos y lo que deben usar los ganchos, pero estas son solo convenciones. El complemento básico no sabe realmente cómo funcionan los suplementos. Si necesitamos suplementos para usar ciertas interfaces, usando class_impliments (), entonces el complemento básico sabrá cómo funciona el suplemento. Para algunos tipos de complementos, llamar a clases de suplementos en lugar de usar ganchos podría ser una mejor solución, pero sin saber cómo funciona, es imposible. Las interfaces hacen esto posible. Otra razón para usar las interfaces es describir un flujo de trabajo que todos en el proyecto deben seguir. A diferencia de escribir una convención, que debe aplicarse mediante revisiones de código cuidadosas, se debe seguir un conjunto de reglas definidas en una interfaz, de lo contrario aparecerá un error fatal. Entonces, ¿deberías usar interfaces de objetos? Sin embargo, la respuesta es sí, no los use solo porque es “mejor OOP” o para que se sienta más sofisticado. En cambio, debe usar interfaces porque hacen que su código sea más fácil de administrar, más fácil de leer y porque resuelve un problema real.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *