在本系列中,我們將討論如何使用 wordpress 構(gòu)建 web 應(yīng)用程序。盡管這不是一個(gè)我們將研究代碼的技術(shù)系列,但我們涵蓋了框架、基礎(chǔ)、設(shè)計(jì)模式、架構(gòu)等主題。
如果您還沒有閱讀該系列的第一篇文章,我推薦您閱讀;但是,出于本文的目的,我們可以將上一篇文章總結(jié)如下:
簡(jiǎn)而言之,軟件可以構(gòu)建在框架上,軟件可以擴(kuò)展基礎(chǔ)。
簡(jiǎn)單地說(shuō),我們區(qū)分了框架和基礎(chǔ)——這兩個(gè)術(shù)語(yǔ)在軟件中經(jīng)?;Q使用,盡管它們不是同一件事。 WordPress 是一個(gè)基礎(chǔ),因?yàn)樗旧砭褪且粋€(gè)應(yīng)用程序。它不是一個(gè)框架。
為此,當(dāng)涉及到在 WordPress 上構(gòu)建 Web 應(yīng)用程序時(shí),我們需要重新思考架構(gòu)或重新考慮如何構(gòu)建應(yīng)用程序的概念模型。
在盡可能高的級(jí)別上,Web 應(yīng)用程序通常由以下三個(gè)組件構(gòu)成:
一般來(lái)說(shuō),表示層就是用戶看到的、用戶交互的。它包括將某些內(nèi)容呈現(xiàn)在用戶面前所需的所有樣式、客戶端代碼和標(biāo)記。
當(dāng)用戶單擊某些內(nèi)容或頁(yè)面呈現(xiàn)從數(shù)據(jù)庫(kù)檢索的信息時(shí),它正在與應(yīng)用程序?qū)舆M(jìn)行交互。
應(yīng)用層負(fù)責(zé)協(xié)調(diào)來(lái)自瀏覽器和/或來(lái)自用戶操作的信息到數(shù)據(jù)庫(kù)。有時(shí),這包括將信息寫入數(shù)據(jù)庫(kù)(例如來(lái)自表單字段的信息)以及從數(shù)據(jù)庫(kù)讀取信息(例如檢索用戶的帳戶信息)。
就像表示層由不同的組件組成(例如樣式、JavaScript、標(biāo)記等)一樣,應(yīng)用程序?qū)右部梢杂筛鞣N不同的組件組成,例如從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)和向數(shù)據(jù)庫(kù)寫入數(shù)據(jù)所需的系統(tǒng)、清理信息、驗(yàn)證信息以及執(zhí)行針對(duì)當(dāng)前問(wèn)題所特有的某些規(guī)則。
最后,數(shù)據(jù)庫(kù)層是存儲(chǔ)數(shù)據(jù)的地方。它可能由文件系統(tǒng)組成,可能由 MySQL 數(shù)據(jù)庫(kù)組成,也可能由第三方解決方案組成,例如“云中”的數(shù)據(jù)存儲(chǔ)(例如 Amazon S3 或類似的東西)。
要理解的要點(diǎn)是,在軟件中,我們總是在處理某種程度的抽象。例如,我們談?wù)摂?shù)據(jù)存儲(chǔ)或數(shù)據(jù)庫(kù)層,但我們并沒有真正具體化。應(yīng)用層和表示層也是如此。
顯然,我們現(xiàn)在并不打算提供這些問(wèn)題的答案,但重點(diǎn)是所有 Web 應(yīng)用程序都包含類似的組件,但每個(gè)組件的詳細(xì)信息因項(xiàng)目而異。
作為一個(gè) Web 應(yīng)用程序本身,WordPress 是各種技術(shù)如何組合在一起形成 Web 應(yīng)用程序的完美示例:
這就是 WordPress 架構(gòu),但是我們想要在應(yīng)用程序之上構(gòu)建的項(xiàng)目又如何呢?他們?nèi)绾巫裱嗤募軜?gòu)?
好吧,請(qǐng)記住 WordPress 是一個(gè)基礎(chǔ) - 而不是一個(gè)框架 - 因此我們默認(rèn)受到 WordPress 架構(gòu)的影響。這并不意味著在某些情況下我們不能引入自己的庫(kù),但它確實(shí)會(huì)影響我們應(yīng)用程序和項(xiàng)目的構(gòu)建方式。
稍后我們將更多地討論庫(kù)、可擴(kuò)展性等,但首先,重要的是要注意,在當(dāng)今時(shí)代,MVC(以及 MVVM 和模型、視圖等的其他變體)范例風(fēng)靡一時(shí),但 WordPress不遵循這一慣例。
對(duì)于為什么這可能是好事或壞事,存在著支持和反對(duì)的爭(zhēng)論,但這不是這篇文章的目的。相反,值得注意的是 WordPress 使用事件驅(qū)動(dòng)模式,而不是模型視圖控制面板。
為此,值得了解事件驅(qū)動(dòng)模型的工作原理,以便您清楚地了解 WordPress 掛鉤的工作原理,以及如何將您的思維從 MVC 或您使用的任何其他范式轉(zhuǎn)變使用、WordPress 如何管理其信息。
在查看事件驅(qū)動(dòng)應(yīng)用程序的示例之前,讓我們回顧一下遵循 MVC 范例的含義。
整個(gè)MVC模型如下所示:
MVC圖標(biāo)題>
現(xiàn)在,事件驅(qū)動(dòng)的應(yīng)用程序可以具有一些相同的組件 - 也就是說(shuō),它們可以具有視圖和模型或視圖和數(shù)據(jù)對(duì)象 - 但它們不一定具有協(xié)調(diào)從前端到后端的信息的控制器后端。
相反,事件驅(qū)動(dòng)編程的工作前提是“某件事發(fā)生了”。因此,在 WordPress 行話中,操作 被命名為“操作”(當(dāng)然,我們也有過(guò)濾器,但我將立即介紹這些內(nèi)容)。
WordPress 提供了鉤子,這些鉤子實(shí)際上是執(zhí)行中的點(diǎn),我們可以在其中引入自己的功能,以便 WordPress 識(shí)別“當(dāng)此事件發(fā)生時(shí),我需要觸發(fā)這些函數(shù)”,其中這些函數(shù)被定義為我們提供的任何內(nèi)容。
事實(shí)是,過(guò)濾器的工作方式相同,但目的不同。簡(jiǎn)而言之,過(guò)濾器是用于在返回應(yīng)用程序執(zhí)行之前以某種方式操作數(shù)據(jù)(例如附加、前置、刪除或更新內(nèi)容)的操作。
那么這看起來(lái)像什么?
沒什么特別復(fù)雜的,對(duì)吧?
本文的要點(diǎn)主要是讓我們思考事件驅(qū)動(dòng)編程以及如何協(xié)調(diào)我們專門在 WordPress 上構(gòu)建 Web 應(yīng)用程序的工作。
也就是說(shuō),我們必須根據(jù)事件或“發(fā)生了一些事情”的事實(shí)來(lái)思考,這樣我們才能知道何時(shí)適當(dāng)?shù)夭迦胛覀冏约旱男袆?dòng)。我們將在下一篇文章中更詳細(xì)地討論這一點(diǎn),但我希望你們從這篇特定文章中學(xué)到的要點(diǎn)是,僅僅因?yàn)槟承〇|西不是 MVC(或者任何下一個(gè)流行的范例) )并不意味著它不適合應(yīng)用程序開發(fā)。
每種模式和架構(gòu)都為我們提供了優(yōu)點(diǎn)和缺點(diǎn),所有這些都有助于成功構(gòu)建 Web 應(yīng)用程序。
在本系列的下一篇中,我們將更詳細(xì)地了解掛鉤如何在 WordPress 上構(gòu)建 Web 應(yīng)用程序中發(fā)揮重要作用,然后我們將開始研究 WordPress 提供的一些功能 -使其成為某些類型(并非所有類型)網(wǎng)絡(luò)應(yīng)用程序的可靠選擇。
以上就是重新構(gòu)思架構(gòu):將WordPress用于Web應(yīng)用開發(fā)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
全網(wǎng)最新最細(xì)最實(shí)用WPS零基礎(chǔ)入門到精通全套教程!帶你真正掌握WPS辦公! 內(nèi)含Excel基礎(chǔ)操作、函數(shù)設(shè)計(jì)、數(shù)據(jù)透視表等
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)