亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 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网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜狠狠狠综合曰曰曰88av| 中文字幕亚洲欧美日韩2019| 国产视频精品免费播放| 欧美精品www在线观看| 亚洲精选一区二区| 91精品综合久久久久久五月天| 国产美女主播一区| 国产精品伦子伦免费视频| 日韩在线免费av| 97免费在线视频| 亚洲人高潮女人毛茸茸| 亚洲成人网av| 国产精品丝袜一区二区三区| 国产综合福利在线| 一区二区三区视频观看| 久久久久中文字幕| 国产精品久久久久久网站| 久久精品国产清自在天天线| 欧美成人在线免费| 欧美日韩在线影院| 久久精品国产69国产精品亚洲| 国产日韩精品综合网站| 欧美二区乱c黑人| 欧美日韩999| 亚洲色图色老头| 庆余年2免费日韩剧观看大牛| 欧美激情奇米色| 日韩免费不卡av| 亚洲一区www| 久久精品国产成人精品| 欧美激情中文字幕乱码免费| 69久久夜色精品国产69| 亚洲国产精品大全| 91在线国产电影| 国产精品福利观看| 亚洲日韩欧美视频一区| 欧美日韩在线视频一区二区| 国产一区香蕉久久| 日韩在线视频国产| 欧美日韩中国免费专区在线看| 在线免费观看羞羞视频一区二区| 久久精品99久久久久久久久| 亚洲欧美日本另类| 亚洲视频专区在线| 性夜试看影院91社区| 精品国产依人香蕉在线精品| 日韩亚洲综合在线| 国产精品第8页| 欧美乱大交做爰xxxⅹ性3| 亚洲a级在线观看| 久久亚洲精品国产亚洲老地址| 亚洲综合视频1区| 精品视频在线播放色网色视频| 亚洲精品v天堂中文字幕| 亚洲一区二区久久| 亚洲全黄一级网站| 国产欧美日韩免费看aⅴ视频| 亚洲视频自拍偷拍| 亚洲一区二区三区毛片| 欧美激情中文字幕乱码免费| 欧美日韩国产va另类| 91久久久久久久久久| 日韩av电影在线播放| 中文字幕日韩在线播放| 成人欧美一区二区三区在线| 91sa在线看| 亚洲精品免费在线视频| 国产成人精品久久二区二区| 亚洲综合视频1区| 国产亚洲aⅴaaaaaa毛片| 欧美黑人性视频| 亚洲国产91精品在线观看| 国产亚洲欧美日韩精品| 性金发美女69hd大尺寸| 亚洲欧洲一区二区三区在线观看| 国内精品免费午夜毛片| 中国china体内裑精亚洲片| 91国产精品91| 欧美日韩ab片| 亚洲欧美三级伦理| 国产精品久久久久久网站| 亚洲剧情一区二区| 欧美黑人极品猛少妇色xxxxx| 中文字幕日本欧美| 色偷偷91综合久久噜噜| 国产在线不卡精品| 日韩电影在线观看中文字幕| 国产精品视频免费观看www| 欧美日本黄视频| 国产亚洲福利一区| 日本成人黄色片| 午夜精品久久久久久99热| 欧美日韩综合视频| 久久天天躁日日躁| 伊人久久免费视频| 亚洲福利在线视频| 亚洲成人网在线| 国产欧美va欧美va香蕉在线| 一区二区三区视频免费在线观看| 欧美与黑人午夜性猛交久久久| 亚洲欧美制服中文字幕| 国产在线视频不卡| 亚洲free性xxxx护士白浆| 欧美视频在线免费| 欧美激情综合色综合啪啪五月| 亚洲国产精品推荐| 亚洲第一福利在线观看| 色偷偷88888欧美精品久久久| 亚洲理论在线a中文字幕| 日本精品性网站在线观看| 2018日韩中文字幕| 最近2019中文字幕大全第二页| 日本a级片电影一区二区| 国产一区二区三区在线视频| 蜜月aⅴ免费一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧洲在线播放| 欧美另类69精品久久久久9999| 理论片在线不卡免费观看| 欧美视频不卡中文| 欧美日韩国产精品一区二区三区四区| 日韩精品www| 青青精品视频播放| 日韩av网站在线| 久久久久久91| 国产一区二区三区18| 一区二区亚洲欧洲国产日韩| 91精品国产综合久久久久久久久| 精品一区二区电影| 精品久久久一区二区| www日韩中文字幕在线看| www欧美日韩| 在线日韩精品视频| 一区二区欧美久久| 国产成人精品视频在线观看| 亚洲性日韩精品一区二区| 久久久国产影院| 国产精品久久久久秋霞鲁丝| 亚洲缚视频在线观看| 久久综合电影一区| 播播国产欧美激情| 亚洲字幕一区二区| 国产成人亚洲综合91| 国产成人在线播放| 深夜福利国产精品| 久久久精品在线观看| 国产精品天天狠天天看| 亚洲精品久久久久中文字幕二区| 亚洲天堂av在线免费观看| 性色av一区二区三区| 日韩亚洲欧美成人| 国产精品9999| 色综合色综合网色综合| 中文字幕精品一区二区精品| 国产精品a久久久久久| 亚洲国产精品成人精品| 亚洲性夜色噜噜噜7777| 精品亚洲国产成av人片传媒| 国产日韩精品在线播放| 久久伊人精品一区二区三区| 在线观看欧美视频| 91精品国产高清自在线看超| 亚洲午夜未满十八勿入免费观看全集| 日韩中文字幕久久|