PHP 中的面向对象编程(OOP):改变 WordPress 开发

面向对象编程(OOP)是软件中的一个重要范例,它以“对象”为中心——包含数据和行为而不是“动作”的类(classes)实例。PHP以服务器端脚本而闻名,它从 OOP 中受益匪浅。这是因为 OPP 支持模块化和可重用的代码,使其更易于维护。反过来,这有利于大型项目更好的组织和可扩展性。掌握 OOP 对于 使用WordPress 主题、插件和自定义解决方案的开发人员来说非常重要。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

OOP在PHP开发中的优势

OOP 通过增强模块化、可重用性、可扩展性、可维护性和团队合作,显着促进了PHP开发。它将 PHP 代码划分为对象来组织 PHP 代码,每个对象代表应用程序的特定部分。使用对象,您可以轻松地重用代码,从而节省时间并减少错误。

考虑到这一点,让我们深入探讨 PHP 中 OOP 的两个具体优势,重点介绍它如何改变开发过程。

1. 代码的复用性和维护

由于具有继承性和多态性,PHP 中的 OOP 使得代码的重复使用变得非常简单。类可以使用其他类的属性和方法。这样,只需稍加改动,就能以新的方式使用旧的代码。

OOP 还能让你更轻松地管理代码。封装意味着对象保持其细节的私密性,只共享所需的内容,并使用称为getters 和setters 的特殊方法。这种方法有助于防止应用程序中某个部分的更改导致其他部分出现问题,从而使代码的更新和维护更加简单。

由于对象本身是完整的,因此查找和修复系统某些部分的错误也变得更加容易。这就提高了代码的整体质量和可靠性。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

2. 增强清晰度和结构

OOP 使用类 和对象使 PHP 代码更干净、更有组织性。类就像对象的模板,将所有属于一起的东西保存在一个地方。OOP 还允许类使用其他类的功能,这意味着不必重复编写相同的代码。所有这些都有助于使代码更干净、更容易修复并且组织得更好。

来自 OOP 的清晰代码有助于团队更好地合作。每个人都更容易理解代码的作用,这意味着解释事情的时间更少,而有更多的时间来做工作。它还可以减少错误,帮助项目保持正轨。当代码整洁有序时,新的团队成员可以快速跟上。

在 PHP 中实现 OOP

在 PHP 的 OOP 中,使用类和对象来组织代码,就像蓝图和房屋一样。你可以为任何事物(如用户或书籍)创建类,包括它们的特征和操作。然后,使用继承从现有的类建立新的类,这样就不会重复代码,节省了时间。而且,由于封装使类的某些部分保持私有,因此代码更加安全。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

1.定义一个具有属性和方法的类

从包含标题、内容和状态属性的类开始Article ,以及设置和显示这些属性的方法。

class Article {
    private $title;
    private $content;
    private $status;

    const STATUS_PUBLISHED = 'published';
    const STATUS_DRAFT = 'draft';

    public function __construct($title, $content) {
        $this->title = $title;
        $this->content = $content;
        $this->status = self::STATUS_DRAFT;
    }

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

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

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

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

2. 创建对象并实现方法链

创建一个文章对象并使用方法链 来设置其属性:

$article = new Article("OOP in PHP", "Object-Oriented Programming concepts.");
$article->setTitle("Advanced OOP in PHP")->setContent("Exploring advanced concepts in OOP.")->setStatus(Article::STATUS_PUBLISHED)->display();

3、加强封装和继承

通过使用 getter 和 setter 方法增强封装并创建FeaturedArticle 继承自 的类Article

class FeaturedArticle extends Article {
    private $highlightColor = '#FFFF00'; // Default highlight color

    public function setHighlightColor($color) {
        $this->highlightColor = $color;
        return $this;
    }

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

$featuredArticle = new FeaturedArticle("Featured Article", "This is a featured article.");
$featuredArticle->setStatus(FeaturedArticle::STATUS_PUBLISHED)->setHighlightColor('#FFA07A')->display();

4. 接口和多态性

为可发布内容定义一个接口并在Article 类中实现它以演示多态性:

interface Publishable {
    public function publish();
}

class Article implements Publishable {
    // Existing class code...

    public function publish() {
        $this->setStatus(self::STATUS_PUBLISHED);
        echo "Article '{$this->title}' published.";
    }
}

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

publishContent($article);

5. 使用共同行为的特征

PHP 允许您使用特征向类添加函数,而无需从另一个类继承。使用下面的代码,引入一个用于记录 CMS 内活动的特征:

trait Logger {
    public function log($message) {
        // Log message to a file or database
        echo "Log: $message";
    }
}

class Article {
    use Logger;

    // Existing class code...

    public function publish() {
        $this->setStatus(self::STATUS_PUBLISHED);
        $this->log("Article '{$this->title}' published.");
    }
}

WordPress 开发中的 OOP

OOP 原则大大增强了 WordPress 的开发能力,尤其是在创建主题、插件和小工具时。在 OOP 的帮助下,你可以为 WordPress 网站编写更简洁、可扩展和可维护的代码。我们将提供一些示例,你可以复制并粘贴到 WordPress 部署中进行测试。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

WordPress 主题中的 OOP: 自定义帖子类型注册

为了演示在 WordPress 主题中使用 OOP,需要创建一个类来处理自定义文章类型的注册。

将以下代码放入主题的 functions.php 文件中。可以在 wp-content/themes 目录中找到你的主题。

class CustomPostTypeRegistrar {
    private $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);
    }
}

// Usage
$bookArgs = [
    'public' => true,
    'label'  => 'Books',
    'supports' => ['title', 'editor', 'thumbnail'],
    'has_archive' => true,
];
new CustomPostTypeRegistrar('book', $bookArgs);

此代码动态注册自定义帖子类型book 及其使用数组传递的详细信息bookArgs 。可以在标记为Books的 WordPress 管理侧边栏中看到新创建的自定义帖子类型。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

WordPress 插件中的 OOP:简码处理程序

对于插件示例,开发一个类“来”处理 用于显示特殊消息的短代码。可以通过将下面的短代码添加到任何帖子或页面来测试此功能。

<?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' => 'Hello, this is your OOP     
message!'], $atts);
        return "<div>{$attributes['message']}</div>";
    }
}

new OOPShortcodeHandler();

将其保存为wp-content/plugins目录 中的my-oop-shortcode-handler.php  。最后,激活插件。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

接下来,在发布或更新之前的页面或帖子编辑器中,使用简码[oop_message] 和[oop_message message="Custom Message Here"],如下所示:

PHP 中的面向对象编程(OOP):改变 WordPress 开发

发布或更新页面/帖子后,会看到显示的短代码表示的消息。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

WordPress 小部件中的 OOP:动态内容小部件

通过将小部件的功能封装在类中,OOP 对小部件也很有好处。 WordPress 核心本身使用面向小部件的 OOP。在这里,创建一个自定义小部件,允许用户显示带有标题和文本区域的动态内容。

将以下代码添加到主题的functions.php 文件或插件中。它定义了一个自定义小部件,显示消息“Hello World From My Custom Widget!(来自我的自定义部件的 Hello World!)”

class My_Custom_Widget extends WP_Widget {

    public function __construct() {
        parent::__construct(
            'my_custom_widget', // Base ID
            'My Custom Widget', // Name
            array('description' => __('A simple custom widget.', 
'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'];
        }
        // Widget content
        echo __('Hello World From My Custom Widget!', 'text_domain');
        echo $args['after_widget'];
    }

    public function form($instance) {
        // Form in WordPress admin
    }

    public function update($new_instance, $old_instance) {
        // Processes widget options to be saved
    }
}

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

使用管理区域外观 下的自定义链接编辑活动主题时 ,可以在需要的地方添加新的自定义小部件。

PHP 中的面向对象编程(OOP):改变 WordPress 开发

使用 WordPress 类(classes)

WordPress 提供了各种类,可以用它们与内容管理系统的核心功能进行交互。其中两个类是 WP_User 和 WP_Post,它们分别代表用户和帖子。

扩展上文的 WordPress 插件示例,结合这些类创建一个简码,显示帖子作者的信息和帖子本身的详细信息。将其保存为 wp-content/plugins 目录中的 my-oop-shortcode-handler-extended.php。最后,激活插件。

<?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->ID, // Default to the current post ID
        ], $atts);

        $postDetails = get_post($attributes['post_id']); // Getting the WP_Post  
object
        if (!$postDetails) {
            return "Post not found.";
        }

        $authorDetails = new WP_User($postDetails->post_author); // Getting the 
WP_User object

        $output = "<div class='post-author-details'>";
        $output .= "<h2>Author Information</h2>";
        $output .= "<p>Name: " . esc_html($authorDetails->display_name) . 
"</p>";
        $output .= "<h2>Post Information</h2>";
        $output .= "<p>Title: " . esc_html($postDetails->post_title) . "</p>";
        $output .= "<p>Content: " . 
esc_html(wp_trim_words($postDetails->post_content, 20, '...')) . "</p>";
        $output .= "</div>";

        return $output;
    }
}

new ExtendedOOPShortcodeHandler();

OOP 和 WordPress REST API

WordPress REST API 是 WordPress 的一个补充,它让你可以更轻松地用编程的方式和网站数据打交道。这个 API 使用了面向对象编程(OOP)的方法,通过类来定义端点、处理响应和请求。这就像是把传统的那种一步步操作的方式,变成了更高级的、用类来封装逻辑的方式。相比之下,WordPress 的很多核心功能,特别是早期的那些,比如主题和插件 API,它们还是用的那种传统的过程编程风格。

举个例子,以前我们可能直接操作全局变量,然后按照一系列函数的顺序来完成任务。但现在,有了 REST API OOP,我们就可以把逻辑封装在类里。比如,有一个类专门负责处理获取、创建、更新或删除帖子的任务。这样做的好处是,它让代码更加清晰,也更容易扩展和调试。

通过定义端点和处理请求的类,REST API 提供了一种更结构化、更可扩展的方式来和 WordPress 数据交互。你只需要发出一个请求,比如 GET /wp-json/wp/v2/posts,就能得到 JSON 格式的响应。这样,你就可以更方便地获取和使用网站数据了。

OOP 在 PHP 和 WordPress 开发中提供了无与伦比的灵活性、可扩展性和可维护性。


联系我们
文章看不懂?联系我们为您免费解答!免费助力个人,小企站点!
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
发布者:光子波动,转转请注明出处:https://www.361sale.com/8403/

(1)
上一篇 2024年 4月 19日 下午3:02
下一篇 2024年 4月 19日 下午8:30

相关推荐

  • WordPress 6.5 现在支持插件依赖关系,这使得开发者们更容易管理插件之间的关系。

    WordPress 6.5 现在可以让插件之间建立依赖关系了。 WordPress 的可扩展性是其最有用的功能之一,它通过插件和Hooks API实现了这一点。很多插件都是建立在其他插件之上的,用来扩展它们的功能。插件依赖功能的目的是让安装和激活扩展插件及其所依赖的插件的过程变得一致且简单。 新的插件标头 现在引入了新的标头 “Requires …

    2024年 3月 20日 WordPress
    0079
  • 如何在 WordPress 中自动为图像添加水印

    为什么在 WordPress 中为图像添加水印? 水印是覆盖在图片上的半透明徽标、文字或图案。水印的设计明显但微妙,这样用户在浏览照片时就不会受到干扰,但如果不购买,就无法下载和使用这些文件。这可以防止他人未经授权使用你的图像,从而防止图像被盗。 你还可以使用自己网站的Logo、URL 或标语作为水印,以提高品牌知名度,让用户更容易记住他们是在哪里看到图片的…

    2024年 4月 21日 WordPress
    0013
  • 探索WordPress:可搭建的网站类型全解析

    很多初学者好奇用WordPress能创建哪些类型的网站。简单来说,答案是“几乎什么网站都行”。我会给你看看用WordPress能搭建的各种网站类型的例子。 WordPress入门 WordPress是支持互联网上超过43%网站的超级流行的网站构建工具,成为市场上最受欢迎的选择。 讲到WordPress,有两个版本要分清楚。一个是WordPress.com,这…

    2024年 3月 30日 WordPress
    0046
  • WordPress 6.5 新增了块绑定 API 功能,让你可以把实时数据加入到网页的模块中

    随着块编辑器的发展,缺少对自定义字段的好支持一直是个问题。虽然自定义字段在 WordPress 里还是很常用,但在块编辑器里,它们被放在了页面底部,没有得到很好的融合。不过,有了新的块绑定 API(Block Bindings API),这一切都将有所改进。 什么是块绑定 API? 想象一下,如果你正在建立一个 WooCommerce 商店,并在设计首页时用…

    2024年 3月 20日
    00124
  • 如何在 WordPress 中使用 wp_enqueue_scripts 挂钩将脚本排入队列 

    WordPress中如何有效管理脚本和样式表 在WordPress中,使用wp_enqueue_script()和wp_enqueue_style()这两个函数可以帮助你将JavaScript脚本和CSS样式表添加到网站的前端加载队列中。这种方法称为“排队”。 使用排队的好处主要有两个: 了解 wp_enqueue_script 排队过程由wp_enqueu…

    5小时前 WordPress
    007

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

020-2206-9892

QQ咨询:1025174874

邮件:info@361sale.com

工作时间:周一至周五,9:30-18:30,节假日休息

客服微信
亲爱的用户们:随着五一劳动节的临近。根据国家规定和我司实际情况,现将2024年五一劳动节放假安排通知如下:放假时间:2024年5月1日(星期三)至2024年5月5日(星期日),共计5天。2024年5月6日(星期一)正常上班。放假期间不处理工单业务。祝大家假期愉快,安全健康!