插件機制與開發(fā)

2024-07-17 23:44 更新

為了獲取更多最新內(nèi)容及功能更新,請直接訪問我們的首頁以查看DzzOffice筆記的最新地址。

插件實現(xiàn)流程

在開始編寫DzzOffice插件之前,您應(yīng)當首先對插件開發(fā)流程有一個大致的了解。以下是推薦的插件開發(fā)流程:

  • 在熟練掌握DzzOffice系統(tǒng)的基礎(chǔ)上,對希望完善或補充的個性化功能進行評估,進而提出插件的功能需求。
  • 對插件進行概要設(shè)計,如:需使用哪些菜單、參數(shù),配置哪些選項、數(shù)據(jù)結(jié)構(gòu)設(shè)計、前后臺實現(xiàn)哪些功能等。
  • 閱讀本文檔并在系統(tǒng)設(shè)置中實際體驗DzzOffice插件接口所實現(xiàn)的功用,如:如何設(shè)計插件以便順利接入官方應(yīng)用市場,插件接口能實現(xiàn)哪些功能、不能實現(xiàn)哪些功能,以及插件為此所需的優(yōu)化、改造和取舍。
  • 編寫相應(yīng)程序代碼和模板語句,實現(xiàn)所需的功能并進行代碼測試、兼容性測試和代碼改進。
  • 如有必要公開插件,可將其配置信息導出為XML文件,并與相應(yīng)程序和模板文件一同打包。同時,編寫一份適用于新手的插件說明書也是必不可少的,包括:插件適用的DzzOffice版本、功能概述、兼容性聲明、安裝方法、使用方法、卸載方法等。
  • 將插件提供給他人或自行使用,根據(jù)使用者反饋對插件進行完善。至此,插件開發(fā)流程結(jié)束。

文件命名規(guī)范

identifier:應(yīng)用的唯一標識符唯一標識符用于在后續(xù)的插件模塊中調(diào)用本插件,必須確保不與現(xiàn)有插件重復。命名規(guī)則應(yīng)遵循與 PHP 變量命名相同的規(guī)范。盡管在初次設(shè)置后仍可進行更改,但強烈建議一次性完成此配置設(shè)置,以免引發(fā)大量的代碼變更并增加編碼的復雜性。請注意:唯一標識符請勿設(shè)置得過短,或使用可能導致與其他插件重復的命名。例如插件名稱為“小胡插件”,則唯一標識符可設(shè)置為“xiaohu”。最后,在dzz/目錄中創(chuàng)建與唯一標識符同名的目錄名,如 dzz/xiaohu/。DzzOffice遵循以下規(guī)范對程序和模板進行命名,請在設(shè)計插件時盡量遵循此命名規(guī)范:

  • 可直接通過瀏覽器訪問的普通程序文件,以.php為后綴命名。
  • 被普通程序文件引用的程序文件,以.inc.php為后綴命名。
  • 被普通程序文件或引用程序文件引用的函數(shù)庫或類庫,以function_.php(函數(shù)庫)或class_.php(類庫)為后綴命名。
  • 模板文件,以.htm為后綴命名,插件模板文件位于dzz/identifier/template/目錄中,移動端插件模板位于dzz/identifier/template/mobile/目錄中。
  • 模板語言包文件,以.php為后綴命名,插件語言包文件位于dzz/identifier/language/zh-cn/目錄中,文件名為lang.php。
  • 動態(tài)緩存文件,存放于/data/cache目錄中,根據(jù)不同的用途進行獨立命名。
  • 使用后臺數(shù)據(jù)備份功能生成的備份文件,通常以.sql為后綴,存放于data/目錄中。
  • 某些目錄中存在內(nèi)容為空白的index.htm文件,此類文件旨在避免Web服務(wù)器在打開Directory Index時可能產(chǎn)生的安全問題。
  • 自DzzOffice 2.0起,產(chǎn)品對數(shù)據(jù)表進行了封裝,封裝后的文件統(tǒng)一命名為Table類,通過"C::t(Table類文件名)"方式調(diào)用。插件如需封裝自己的數(shù)據(jù)表,可將Table類文件存放于dzz/identifier/class/table/目錄下,并以table_表名.php格式命名。

注意事項

請在您動手編寫插件之前,務(wù)必仔細閱讀以下原則,并遵循這些原則以避免可能發(fā)生的問題:

  • 請將所有與插件相關(guān)的所有程序(包括前端和后端程序)放置于 dzz/ 目錄中。同時在插件的安裝說明中指出,插件的文件需要復制到哪些目錄。為了避免與其他插件沖突,請盡量建立 dzz/ 下的子目錄,并將插件程序放置于子目錄下,這樣您編寫的插件將獲得更好的兼容性。
  • 如果您的插件包含“導航欄”模塊,該模塊將統(tǒng)一用 index.php?mod=xxx&op=yyy 的方式調(diào)用,請在相應(yīng)鏈接、表單中使用此方式。其中 xxx 為插件的惟一標識符,yyy 為模塊名稱。前臺插件外殼程序 index.php 已經(jīng)加載了通用初始化模塊 /core/class_core.php,不需再次引用。
  • 如果您的插件包含“管理中心”模塊,該模塊將統(tǒng)一用 index.php?mod=xxx&op=admin 的方式調(diào)用,請在相應(yīng)鏈接、表單中使用此方式。其中 xxx 為插件的惟一標識符,admin 為模塊名稱。
  • 請勿繞過插件的前后臺外殼(index.php 和 admin.php)而以直接調(diào)用某程序的方式編寫插件。這種做法會導致用戶使用不便、代碼冗余和不規(guī)范,同時又產(chǎn)生了因驗證程序考慮不周到而帶來的安全隱患。您可以在任何地方(如鏈接和表單)方便地使用上述 URL 地址調(diào)用插件模塊。

  • 由于所有與插件相關(guān)的程序(包括前端程序)都使用外殼調(diào)用,請務(wù)必在第一行添加以下代碼:
if(!defined('IN_DZZ')) { exit('Access Denied'); }

后臺程序第一行添加以下代碼:

if (!defined('IN_DZZ') && !defined('IN_ADMIN')) { exit('Access Denied'); }

以免其被 URL 直接請求調(diào)用,產(chǎn)生安全問題。

  • 通常情況下,請使用插件導出的功能發(fā)布插件,以便用戶一次性導入插件的配置數(shù)據(jù)。在極特殊情況下,,也可以分步驟告知使用者如何進行插件配置管理和安裝此插件。
  • 若功能獨立,請盡量使用單獨程序的方式編寫插件(即外掛型插件),并盡量減少對 DzzOffice 本身代碼的修改,這將為使用者今后的升級帶來很大方便。
  • 您可以修改 DzzOffice 本身的數(shù)據(jù)結(jié)構(gòu),但推薦在不影響效率的前提下將插件數(shù)據(jù)存儲在另外的數(shù)據(jù)表中,以防您添加的字段、索引與后期版本 DzzOffice 核心數(shù)據(jù)字段重名。
  • 請在插件說明書中對插件進行詳盡描述,如新增字段、表、程序,版本兼容性,后續(xù)支持方式(如不提供支持或采用特定方式提供)。若可能,請?zhí)峁┎寮男遁d方法,包括去除字段、刪除新增程序、恢復被插件修改的程序等。使用者會感激您為此付出的辛勤勞動,甚至愿意支付相應(yīng)的費用支持您未來的發(fā)展。
  • 若插件使用另外的數(shù)據(jù)表存儲,請在插件管理中準確設(shè)置插件所使用的數(shù)據(jù)表名稱(不含前綴),以便用戶在備份數(shù)據(jù)時能一并備份插件數(shù)據(jù)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號