Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

La programación orientada a objetos (POO) es un importante paradigma del software que se centra en los "objetos", instancias de clases que contienen datos y comportamientos en lugar de "acciones". PHP, conocido por sus scripts del lado del servidor, se ha beneficiado enormemente de la POO. Esto se debe a que la POO permite un código modular y reutilizable, lo que facilita su mantenimiento. A su vez, esto facilita una mejor organización y escalabilidad para proyectos de mayor envergadura. Dominar la programación orientada a objetos es importante para los desarrolladores que trabajan con temas, plugins y soluciones personalizadas de WordPress.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

Ventajas de la programación orientada a objetos en el desarrollo PHP

La programación orientada a objetos facilita considerablemente el desarrollo de PHP al mejorar la modularidad, la reutilización, la extensibilidad, la capacidad de mantenimiento y el trabajo en equipo. Organiza el código PHP dividiéndolo en objetos, cada uno de los cuales representa una parte específica de la aplicación. Utilizando objetos, se puede reutilizar fácilmente el código, ahorrando tiempo y reduciendo los errores.

Con esto en mente, vamos a sumergirnos en dos beneficios específicos de la programación orientada a objetos en PHP, centrándonos en cómo puede transformar el proceso de desarrollo.

1. Reutilización y mantenimiento del código

Gracias a la herencia y el polimorfismo, la programación orientada a objetos en PHP facilita la reutilización del código. Las clases pueden usar propiedades y métodos de otras clases. De esta manera, el código antiguo se puede utilizar de nuevas maneras con sólo cambios menores.

La programación orientada a objetos también facilita la gestión del código. La encapsulación significa que los objetos mantienen sus detalles en privado, compartiendo sólo lo que necesitan y utilizando métodos especiales llamados getters y setters. Así se evita que los cambios en una parte de la aplicación causen problemas en otras, lo que facilita la actualización y el mantenimiento del código.

Encontrar y corregir errores en determinadas partes del sistema también resulta más fácil porque el propio objeto está completo. Esto mejora la calidad general y la fiabilidad del código.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

2. Mejorar la claridad y la estructura

Programación orientada a objetos mediante clases responder cantandonovioHacer el código PHP más limpio y organizado. Las clases son como plantillas para los objetos, manteniendo todo lo que debe estar junto en un solo lugar.OOP también permite a las clases utilizar la funcionalidad de otras clases, lo que significa no tener que escribir el mismo código una y otra vez. Todo esto ayuda a que el código sea más limpio, más fácil de corregir y esté mejor organizado.

Un código claro de programación orientada a objetos ayuda a los equipos a trabajar mejor juntos. Es más fácil para todos entender lo que hace el código, lo que significa menos tiempo explicando cosas y más tiempo haciendo el trabajo. También reduce los errores y ayuda a mantener el rumbo de los proyectos. Cuando el código está limpio y organizado, los nuevos miembros del equipo pueden seguirlo rápidamente.

Implementación de la programación orientada a objetos en PHP

En la programación orientada a objetos de PHP, el código se organiza mediante clases y objetos, como los planos y las casas. Puedes crear clases para cualquier cosa, como usuarios o libros, incluyendo sus características y operaciones. Luego, usa la herencia para crear nuevas clases a partir de clases existentes, lo que ahorra tiempo al no duplicar código. Y, como la encapsulación mantiene privadas algunas partes de la clase, el código es más seguro.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

1. Definir una clase con atributos y métodos

A partir de clases con atributos de título, contenido y estadoArtículo y métodos para establecer y mostrar estas propiedades.

clase Artículo {
    privado $title.
    private $content; private $status.
    private $status.

    const STATUS_PUBLISHED = 'publicado';
    const STATUS_DRAFT = 'borrador'; const

    public function __construct($ítulo, $contenido) {
        $this->título = $ítulo;
        $this->content = $content;
        $this->status = self::STATUS_DRAFT;
    }

    public function setTitle($ítulo) {
        $this->title = $title; } public function setTitle($this; return $this; }
        return $this; } public function setTitle($ítulo)
    }

    public function setContent($content) {
        $this->content = $content; return $this; } public function setContent($this; }
        return $this; }
    }

    public function setStatus($status) {
        $this->status = $status; return $this; } public function setStatus($status; }
        return $this; }
    }

    public function display() {
        echo "<h2>{$this-&gt;title}</h2><p>{$this-&gt;content}</p><strong>Estado: {$this-&gt;status}</strong>";
    }
}

2. Creación de objetos e implementación de cadenas de métodos

Cree un objeto artículo y utilice la funcióncadena de métodos para establecer sus propiedades:

$article = new Article("POO en PHP", "Conceptos de Programación Orientada a Objetos");
$article->setTitle("POO avanzada en PHP")->setContent("Explorando conceptos avanzados en POO.")->setStatus(Article::STATUS_PUBLISHED)-> display();

3. Mejora de la encapsulación y la herencia

Mejore la encapsulación utilizando métodos getter y setter y cree un métodoArtículo destacado Clases heredadas deArtículo::

class FeaturedArticle extends Artículo {
    private $highlightColor = '#FFFF00'; // Color de resaltado por defecto

    public function setHighlightColor($color) {
        $this-&gt;highlightColor = $color; // Color de resaltado por defecto.
        return $this; }
    }

    public function mostrar() {
        echo "<div> style='background-color: {$this-&gt;highlightColor};'&gt;";";
        parent::display();
        echo "</div>";
    }
}

$featuredArticle = new FeaturedArticle("Artículo destacado", "Este es un artículo destacado");
$featuredArticle-&gt;setStatus(FeaturedArticle::STATUS_PUBLISHED)-&gt;setHighlightColor('#FFA07A')-&gt;display();

4. Interfaces y polimorfismo

Defina una interfaz para los contenidos publicables e inclúyala en el archivoArtículo para demostrar el polimorfismo:

interfaz Publicable {
    función pública publish(); }
}

class Artículo implements Publicable {
    // Código de la clase existente...

    public function publicar() {
        $this->setStatus(self::STATUS_PUBLISHED); }; echo "Artículo '{$this->title}' publicado.
        echo "Artículo '{$this->title}' publicado."; }
    }
}

function publicarContenido(Publicable $content) {
    $content->publish(); } function publishContent(Publishable $content->publish(); }
}

publishContent($article);

5. Utilización de las características de un acto conjunto

PHP le permite añadir funciones a una clase usando traits sin tener que heredar de otra clase. Utilice el siguiente código para introducir una función que se utiliza para registrar la actividad dentro del CMS:

trait Logger {
    public function log($message) {
        // Registra el mensaje en un archivo o base de datos
        echo "Log: $message"; }
    }
}

class Artículo {
    class Article { use Logger; } }

    // Código de la clase existente...

    public function publicar() {
        $this->setStatus(self::STATUS_PUBLISHED); $this->log("Artículo '{$this->title}' publicado.")
        $this->log("Artículo '{$this->título}' publicado.");
    }
}

Programación orientada a objetos en el desarrollo de WordPress

Los principios de la programación orientada a objetos mejoran enormemente el desarrollo de WordPress, especialmente a la hora de crear temas, plugins y widgets. Con la ayuda de la POO, puede escribir código más limpio, escalable y mantenible para su sitio web WordPress. Le proporcionaremos algunos ejemplos que puede copiar y pegar en su implementación de WordPress para realizar pruebas.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

Programación orientada a objetos en temas de WordPress: Registro de tipos de entrada personalizados

Para demostrar el uso de la programación orientada a objetos en un tema de WordPress, es necesario crear una clase para gestionar el registro de tipos de entrada personalizados.

Ponga el siguiente código en el archivo functions.php de su tema. Tu tema se encuentra en el directorio wp-content/themes.

clase CustomPostTypeRegistrar {
    privado $postType.
    private $args.

    public function __construct($postType, $args = []) {
        $this->postType = $postType;
        $this->args = $args;
        add_action('init', array($this, 'registerPostType'));
    }

    public function registerPostType() {
        register_post_type($this->postType, $this->args);
    }
}

// Uso
$bookArgs = [
    
    
    
    'has_archive' => true, .
]; new CustomPostTypeReport
new CustomPostTypeRegistrar('libro', $bookArgs);

Este código registra dinámicamente los tipos de entrada personalizadosLibro y su uso de matrices para pasar detallesbookArgs . Esto se puede hacer añadiendo una etiqueta al archivoLibrospara ver el nuevo tipo de entrada personalizada en la barra lateral de administración de WordPress.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

OOP: Shortcode Handler en WordPress Plugin

Para el ejemplo de plugin, desarrollar una clase "para" manejar shortcodes para mostrar mensajes especiales. Esto se puede probar añadiendo el siguiente shortcode a cualquier post o página.

<?php
/**
* Plugin Name: OOP Shortcode Handler
* Description: Handles a custom shortcode with OOP.
* Version: 1.0
* Author: Name
*/

class OOPShortcodeHandler {
    public function __construct() {
        add_shortcode('oop_message', array($this, 'displayCustomMessage'));
    }

    public function displayCustomMessage($atts) {
        $attributes = shortcode_atts(['message' => 'Hola, este es tu mensaje OOP
'], $atts);
        devolver "<div>{$attributes['mensaje']}</div>";
    }
}

new OOPShortcodeHandler();

Guárdalo comowp-content/pluginsCatálogo demy-oop-shortcode-handler.php  . Por último, active el plugin.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

A continuación, en la página o post editor antes de publicar o actualizar, utilice el código corto[oop_message] responder cantando[oop_message message="Mensaje personalizado aquí"]como se muestra a continuación:

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

Publicar o actualizarPáginas/PostsA continuación, aparecerá el mensaje indicado por el código corto.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

Programación orientada a objetos en los widgets de WordPress: widgets de contenido dinámico

La programación orientada a objetos también es buena para los widgets, ya que encapsula su funcionalidad en clases. El propio núcleo de WordPress utiliza OOP orientada a widgets, donde se crea un widget personalizado que permite al usuario mostrar contenido dinámico con un título y un área de texto.

Añada el siguiente código al temafunciones.php o plugin. Define un widget personalizado que muestra el mensaje "¡Hola mundo desde mi widget personalizado!".

class Mi_Widget_personalizado extends WP_Widget {

    función pública __construct() {
        padre::__construct(
            'my_custom_widget', // ID Base
            Mi Widget Personalizado', // Nombre
            array('description' => __('Un widget personalizado simple.', 'text_domain', // Nombre))
text_domain'),) // Args
        );
    }

    public function widget($args, $instance) {
        echo $args['before_widget'];
        if (!empty($instance['title'])) {
            echo $args['before_title'] . apply_filters('widget_title',
$instance['title']) . $args['after_title']; .
        }
        // Contenido del widget
        echo __('¡Hola mundo desde mi widget personalizado!', 'text_domain'); echo $args['after_title']; } // Contenido del widget.
        echo $args['after_widget']; // Contenido del widget echo __('¡Hola mundo desde mi widget personalizado!', 'text_domain'); }
    }

    public function form($instance) {
        // Formulario en el admin de WordPress
    }

    public function update($new_instance, $old_instance) {
        // Procesa las opciones del widget a guardar
    }
}

function register_my_custom_widget() {
    register_widget('Mi_Custom_Widget'); } function register_my_custom_widget(); }
}
add_action('widgets_init', 'register_my_custom_widget'); } function register_my_custom_widget('Mi_Widget_personalizado'); }

Aspecto de la zona de gestión del uso inferiorpersonalizaciónCuando se edita un enlace de un tema activo, se pueden añadir nuevos widgets personalizados cuando sea necesario.

Programación orientada a objetos (POO) en PHP: Transformación del desarrollo de WordPress

Uso de las clases de WordPress

WordPress proporciona varias clases que pueden ser usadas para interactuar con la funcionalidad central del sistema de gestión de contenidos. Dos de estas clases son WP_User y WP_Post, que representan usuarios y entradas, respectivamente.

Amplía el ejemplo del plugin de WordPress anterior combinando estas clases para crear un shortcode que muestre información sobre el autor de la entrada y detalles sobre la propia entrada. Guárdalo como my-oop-shortcode-handler-extended.php en el directorio wp-content/plugins y, por último, activa el plugin.

<?php
/**
* Plugin Name: Extended OOP Shortcode Handler
* Description: Extends the shortcode handler to display post and author 
information.
* Version: 1.1
* Author: Your Name
*/

class ExtendedOOPShortcodeHandler {
    public function __construct() {
        add_shortcode('post_author_details', array($this,   
'displayPostAuthorDetails'));
    }

    public function displayPostAuthorDetails($atts) {
        global $post; // Accessing the global $post object to get current post  
details

        $attributes = shortcode_atts([
            'post_id' => $post-&gt;ID, // Por defecto el ID del post actual
        ], $atts).

        $postDetails = get_post($attributes['post_id']); // Obtener el objeto WP_Post
objeto
        if (!$postDetails) {
            return "Post no encontrado";
        }

        $authorDetails = new WP_User($postDetails-&gt;post_author); // Obtener el objeto
objeto WP_User

        1TP4Salida = "<div class='post-author-details'>";;
        $output . = "<h2>Información sobre el autor</h2>";;
        $output . = "<p>Nombre: " . esc_html($authorDetails-&gt;display_name) .
"</p>";;
        $output . = "<h2>Información postal</h2>";;
        $output . = "<p>Título: " . esc_html($postDetails-&gt;post_title) . "</p>";;
        $output . = "<p>Contenido: " .
esc_html(wp_trim_words($postDetails-&gt;post_content, 20, '...')) . "</p>";;
        $output . = "</div>";;

        return $output.
    }
}

new ExtendedOOPShortcodeHandler();

POO y API REST de WordPress

La API REST de WordPress es un complemento de WordPress que facilita el trabajo programático con los datos del sitio web. Esta API utiliza un enfoque de Programación Orientada a Objetos (POO) para definir puntos finales y manejar respuestas y peticiones a través de clases. Es como tomar el enfoque tradicional paso a paso y convertirlo en una forma más avanzada de encapsular la lógica con clases. Por el contrario, muchas de las características principales de WordPress, especialmente las primeras, como los temas y las API de plugins, siguen utilizando ese estilo de programación procedimental tradicional.

Por ejemplo, antes podíamos haber manipulado variables globales directamente y luego seguir una serie de funciones para completar la tarea. Pero ahora, con API REST responder cantando OOPpodemos encapsular la lógica en clases. Por ejemplo, tener una clase dedicada a la tarea de buscar, crear, actualizar o eliminar mensajes. El beneficio de esto es que hace el código más claro y más fácil de extender y depurar.

Al definir puntos finales y clases para gestionar las peticiones, la API REST proporciona una forma más estructurada y extensible de interactuar con los datos de WordPress. Todo lo que necesitas hacer es realizar una petición, como GET /wp-json/wp/v2/posts, y obtendrás una respuesta en formato JSON. Esto facilita la obtención y el uso de los datos del sitio.

La programación orientada a objetos ofrece una flexibilidad, escalabilidad y facilidad de mantenimiento inigualables en el desarrollo de PHP y WordPress.


Póngase en contacto con nosotros
¿No puede leer el artículo? Póngase en contacto con nosotros para obtener una respuesta gratuita. Ayuda gratuita para sitios personales y de pequeñas empresas
Teléfono: 020-2206-9892
QQ咨询:1025174874
(iii) Correo electrónico: info@361sale.com
Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres
Publicado por photon fluctuations, retweeted with attribution:https://www.361sale.com/es/8403/

Como (1)
Anterior Martes, 19 de abril de 2024, 15.02 h.
Siguiente 19 de abril de 2024 a las 20:30.

Recomendado

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Póngase en contacto con nosotros

020-2206-9892

QQ咨询:1025174874

Correo electrónico: info@361sale.com

Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres

Servicio de atención al cliente WeChat
Para facilitar el registro y el inicio de sesión de los usuarios en todo el mundo, hemos anulado la función de inicio de sesión por teléfono. Si tiene problemas para iniciar sesión, póngase en contacto con nuestro servicio de atención al cliente para que le ayuden a vincular su dirección de correo electrónico.