麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > CMS > PhpCMS > 正文

phpcms2008 模塊擴展形式

2024-09-10 07:16:06
字體:
來源:轉載
供稿:網友

phpcms2008 采用核心+模塊的目錄結構,新需求新功能只需以模塊的形式加入便可,比如 comment 留言模塊.

但如果一個模塊只用于滿足業務需求,與其它模塊無關,不建立一套 API 讓其它模塊使用其功能,不提供一種形式讓其它模塊擴展其功能,則這樣的的模塊并不是[活]的,而是[死]的.

# search 模塊

全文搜索模塊,是典形的提供 API 讓其它模塊調用的功能模塊,其它模塊只要使用 search 模塊的 API,就可以使用 search 模塊的全文搜索功能,無需自己去開發.

# cms 模型字段

cms 模型類型字段定義文件在 /include/fields/ 中,原來的設計是都在 /include/fields/ 中,所以在此目錄下可以看到如 brandid 這種屬于 brand 模塊的字段.

也就是說,所有模塊如果想提供字段,都必須放在 /include/fields/ 目錄中.

但更理想的結構應是,各模塊提供的字段類型放在自己模塊內部,向 cms 注冊一下模塊名,告訴 cms 哪些模塊是提供字段的便可.

# api 與 callback

上面兩個模塊分別代表模塊化的兩個關鍵概念——api 與 callback.

api 就如全文搜索模塊,此模塊做好一個全文搜索功能,提供 api 讓其它模塊來使用自己的這個功能.

callback 就如模型字段,模型字段本身自成一套系統,但提供一組規則讓其它模塊擴展自己這個系統中的功能,這個關系就好比瀏覽器與插件,模型字段就是瀏覽器,其它模塊提供的字段就像插件,插件擴展瀏覽器的功能.

一個模塊同時有 api 與 callback 規則是非常正常的事.

# api

api 基本沒什么規則,接口的好壞完全取決于 api 的設計者,在 cms 中的規定只有一條,其它模塊通過調用目標模塊 api 目錄下定義的接口使用目標模塊功能,禁止直接使用目標模塊其它文件.

# callback

callback 屬于擴展,需要一個規則,所有模塊都遵守,使得模塊間的擴展形式統一.

cms 中的 callback 規則很簡單:所有對其它模塊的擴展都存放于模塊 callback 目錄中,callback 目錄中的規則由所擴展的模塊確定.

下面用三個 callback 類模塊作具體說明:

# pmque 模塊

pmque 是隊列模塊.就是把需要執行的操作先保存入隊列.然后一個一個慢慢執行,所以隊列模塊有兩個概念:加入隊列與執行操作.

于是 pmque 模塊的 api 目錄定義了加入隊列的函數,供其它模塊調用以實現加入隊列的功能.

執行操作的基本實現形式就是回調,英文為 callback,隊列中所有需要執行的操作都不是隊列模塊自己的代碼,全是其它模塊的代碼,所以隊列模塊需要回調隊列模塊在執行隊列時需要回調其它模塊的代碼.

所以,pmque 定義了一個簡單的callback 規則:

1. 回調代碼以函數形式定義.

2. 要使用隊列的模塊把回調函數定義在模塊自己的 {mod}/callback/pmque.func.php 文件中.

執行操作包含兩個基本的數據:所屬模塊與回調函數名.

eg.comment.commment_add_post_last

comment 是回調函數所在的模塊,comment_add_post_last 是回調函數名,當隊列模塊取出這個執行操作時,就會包含 /comment/callback/pmque.func.php 文件并調用里面定義的 comment_add_post_last 函數.

這樣,只要使用 pmque 模塊的模塊按 pmque 模塊的 callback 規則在自己的 callback 目錄寫好需要的文件,就可以使用隊列模塊了.

而隊列模塊呢,只要設計好 callback 規則,就可以讓所在已存在的,未存在的,未來開發的,模塊提供隊列功能.

# pcron 模塊

cron 是 linux 下的計劃任務程序,pcron 模塊就是使用 php 實現的一個計劃任務程序.

pcron 模塊本身負責的是定時執行,實際要執行的代碼都是其它模塊的代碼,因此用到的同樣是 callback.

pcron 模塊的 callback 規則就是:

1.使用 pcron 模塊的模塊,在自己模塊目錄中定義 {mod}/callback/pcron.callback.php 文件.

pcron 模塊會按周期(如每分鐘)包含這個文件(即執行),文件的編寫形式及注意事項都由 pcron 模塊決定.

也就是說,提供 callback 的模塊決定 callback 的規則,使用 callback 的模塊按所使用的模塊 callback 規則定義.

比如 mail 模塊需要定時發郵件,就按 pcron 模塊的 callback 規則在自己模塊目錄中定義好對應的 callback 文件.

因為計劃任務功能的特點,pcron 模塊并不像 pmque 模塊那樣使用 api 添加隊列,而是需要計劃任務的模塊定義好 callback 文件后,向 pcron 模塊注冊一下,pcron 模塊會依次調用所注冊模塊的 callback 文件.

具體的實現就是注冊的模塊把模塊名保存在一個文本文件中,一行一個.

# block 模塊

block 模塊提供 callback 讓其它模塊通過 callback 擴展 block 模塊的功能,只要提供 callback 的模塊都有自己的 callback 規則,其它模塊要擴展時都需要查閱對應的 callback 規則,所以,把模塊的 callback 規則以源代碼的方式保存在模塊目錄內,查閱起來便很方便.

所以,有以下幾條 callback 規則:

1.提供 callback 的模塊本身提供的功能保存自己的 callback 目錄下,以供其它模塊查閱與參考.Vevb.com

比如 /block/callback/block/ 就是 block 模塊本身提供的功能,其它模塊可以參照此目錄在自己模塊目錄 {mod}/callback/block/ 擴展 block 模塊的功能.

2.若提供 callback 的模塊本身不需要 callback,則也在 callback 目錄中定義 callback 規則示例說明文件,比如:

/pmque/callback/pmque.func.php

/pcron/callback/pcron.callback.php

兩個都是模塊 callback 規則說明文件,供其它模塊要查閱與參考.

3. 使用英文 example 表示 callback 示例規則,比如 block 模塊本身定義有 callback 功能,所以使用 example 建立 callback 規則的示例說明文件:

/block/callback/block/data/example/

/block/callback/block/print/example/

通過以上三條規則,其它模塊在擴展 callback 時就可以快速地找到 callback 規則的示例說明了.

# 結語

通過確定這樣一種簡單的 callback 目錄規則,編寫模塊時遵守這個規則,便能實現模塊間所乎無限的互相擴展.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产人成精品综合欧美成人 | 国内性爱视频 | 在线日韩av电影 | 国产精品自拍av | 99视频网址 | 日韩精品中文字幕一区二区三区 | 国产一区日韩精品 | 久草在线资源福利站 | 黄视频网站免费观看 | 国产一精品一av一免费爽爽 | 亚洲成人入口 | 越南一级黄色片 | 国产美女自拍av | 色综合久久久久久久久久 | 亚洲精品欧美在线 | 久久免费观看一级毛片 | 91九色国产视频 | 91中文字幕在线观看 | 在线观看免费av网 | 亚洲午夜久久久久 | 九九热精品视频在线播放 | 日韩精品一区二区三区中文 | 成人一级毛片 | 一级毛片在线免费观看 | 日本一区视频在线观看 | 免费观看一区二区三区视频 | 天天草天天干天天 | chinese hd xxxx tube| 精品国产99久久久久久宅男i | 美国黄色毛片女人性生活片 | www.91操| 91短视频版高清在线观看免费 | 性盈盈盈影院 | 牛牛碰在线 | 黄色片视频观看 | 久久99国产精品免费网站 | arabxxxxvideos | 精品一区二区三区在线观看视频 | 成人性生活视频在线播放 | 亚洲国产精品二区 | 免费一级毛片免费播放 |