WordPress 和面向对象的编程——概述

已发表: 2021-04-20

如果您是 WordPress 开发人员,您可能会以程序化方式编写代码。 您设置一些简单的有序步骤并按照它们来实现所需的输出并解决问题。 一个简单的例子是一个 WordPress 循环,如下所示:

 <?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // // Post Content here // } // end while } // end if ?>

在一个循环中,您首先检查您是否有与正在运行的查询相对应的帖子,如果有,您开始使用 while 循环遍历这些帖子。 您将在functions.php文件中插入的每个自定义函数也是如此。

在本文中,我们将从过程式编程过渡到一种称为面向对象编程 (OOP) 的编程风格。 我们将研究这与您迄今为止所使用的编程风格有何不同,并看看它的一些优点。 但最重要的是,我们将解释面向对象的概念如何在 WordPress 环境中工作以及它们之间的关系。

在进一步讨论之前,我们想要确定的是,了解面向对象编程的角色以及何时适合使用它是很重要的。 学习如何构建面向对象的插件或主题可能适合您的项目,但重要的是您要了解这种情况。 希望本文能帮助您了解某个项目何时以及为何适合用面向对象的代码编写。

问题

WordPress 本身已经推动您进行程序化思考。 而且,尽管 WordPress 一直使用 PHP 对象,但这并不意味着 WordPress 本身就是面向对象的。 这是对 OOP 的常见误解,也是许多人认为 WordPress 是面向对象的原因,尽管事实并非如此。

重要的是要澄清,我们并不是说您应该避免使用过程式编程,但这种编码风格确实存在限制。 例如,在自定义主题或插件时,您可能会通过以程序方式编写代码来实现所需的 HTML 输出。 但是可扩展性和未来的维护呢?

在构建自定义插件时,评估它的可扩展性非常重要。 例如,随着插件的成熟,您可能希望能够通过添加更多功能来扩展您的插件。 正是在这一点上,当您按程序编写代码时,您将开始难以组织代码。

但是,即使您不编写插件,使用过程式编程,您也总是冒着达到无法确定所有内容如何组合在一起的风险。 因此,您所做的每一个小改动都可能产生意想不到的后果。

面向对象编程用于解决更复杂的问题。 它可能与过程编程有相同的目标,但在许多情况下提供了一种更好的工作方式。 它允许您为可重用、有组织且安全的问题创建大胆的解决方案。

面向对象编程如何解决问题

面向对象编程有两个重要的概念:对象

类本质上是用于制作对象的模板。 每个对象都有自己的方法和属性集,这些属性的值可能会有所不同。

因此,在继续前进之前,确保我们了解对象是什么是至关重要的。 让我们分解一个简单的句子作为例子:

'我吃青苹果'。

苹果是对象,绿色是对象的颜色(对象属性),动词“吃”是方法(函数)。

一个类定义了所有使用它的对象的属性和行为。 通过以正确的方式组合这些编程“砖块”来解决 OOP 问题。

在深入研究之前,重要的第一步是花一些时间来设计您提出的解决方案。 本质上,您需要做的是:

  1. 定义问题以及插件应该做什么来解决它
  2. 描述类及其关系以及对象之间的交互
  3. 把一切都变成代码
  4. 审查和测试项目

当您处于这一步时,请记住,如果您在第一次尝试时就做到了完美,您会很幸运! 您将需要重新开始,直到您获得可以解决问题的正确概念。 将其视为创意过程的一部分,该过程将为您提供一组工具,您以后可以作为一个团队使用而不会发生冲突。

在下一篇与 OOP 相关的文章中,我们将演示一个简单的示例,它将使上述所有理论变为现实。

面向对象编程的特点

在我们进入面向对象编程的特性之前,让我们看看我们是否可以通过一个简单的比喻进一步阐明它是如何工作的。

假设我们有一个用来烧水的锅炉。 当我们使用机器时,我们以某种方式进行操作,这是制造商允许我们使用的唯一方式。 当我们按下“开启”按钮时,我们无法覆盖锅炉的运行方式,老实说,我们也不想也不需要这样做。 这给了我们两个非常重要的优势。

首先,有限的功能(即烧开一些水)意味着系统更加强大和更加安全。 有限的功能集和仅提供“开/关”按钮意味着我们作为用户无法靠近锅炉的机构。 默认情况下,这意味着出错更少,系统整体更健壮。 操作的简单性也使其对用户更加友好,几乎任何人都可以使用它。

使用 Pressidium 托管您的网站

60 天退款保证

查看我们的计划

牢记这一点,让我们看看这与面向对象编程有何关系。 从理论上讲,OOP 具有三个有价值的特性:封装、继承和多态

封装所做的是将数据和行为分组到单个实体中。 在类内部,您可以定义它的使用方式(锅炉按钮)并通过使用类上的公共、受保护或私有标签来控制可见性。 这也使它成为一个非常安全的系统,因为它使您能够控制谁可以访问。 这也意味着它更易于维护和使用。

继承是关于帮助您在类之间重用代码。 一个这样的例子是当一个类扩展另一个类时。 在扩展 Walker 类以更改树状数据(如菜单或注释结构)的 HTML 输出时,您可能已经使用过它。 了解类之间的关系将使您能够创建可重用的面向对象代码。

最后,多态性使所有这些关系协同工作,定义了类的共同点,如何重用这些共同元素以及它们是否与其他任何东西相关。

结论

如果没有一些具体的例子,以上所有内容可能仍然有点令人困惑。 然而,阐明面向对象编程背后的理论仍然很重要,在以后的文章中,我们将通过一些有用的示例来推动这一点,以便您了解如何在现实世界中使用这种令人兴奋的编程方法。

我们的目标是,当您阅读完我们关于 OOP 的系列文章时,您将有信心在各种情况下使用这种编程方法。 与此同时,您可能想继续阅读 Wikipedia 上的 OOP。

单击此处阅读我们的面向对象编程系列的第 2 部分