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 部分