typecho插件編寫(xiě)教程(四):插件掛載
終于,在能夠保存配置信息后,我們可以開(kāi)始編寫(xiě)插件的掛載功能了。
首先我們需要知道系統(tǒng)為我們?cè)诟鱾€(gè)關(guān)鍵的環(huán)節(jié)都預(yù)留了插件點(diǎn)給我們,系統(tǒng)運(yùn)行到插件點(diǎn)時(shí),會(huì)檢測(cè)到是否有插件掛在這個(gè)點(diǎn)上,然后執(zhí)行插件的邏輯!
插件的工作就是找到合適的插件點(diǎn),掛上去,然后執(zhí)行自己的邏輯。
插件點(diǎn),插件鉤子,插件接口。。。在老高這兒是一個(gè)概念
我們的插件需要執(zhí)行的邏輯在這里,Widget_Contents_Post_Edit類(lèi)的finishPublish方法
文件路徑var/Widget/Contents/Post/Edit.php:736,可以看到,接口為我們傳遞了兩個(gè)參數(shù),一個(gè)是發(fā)布的內(nèi)容,另一個(gè)是類(lèi)本身。有了類(lèi)本身,我們可以在插件中隨意調(diào)用他的公共方法!
// 文章完成發(fā)布插件接口
$this->pluginHandle()->finishPublish($contents, $this);
還有一個(gè)頁(yè)面發(fā)布接口,下面的代碼會(huì)提到。
如何掛載
代碼如下,有省略。
<?php
class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface
{
public static function activate(){
//掛載發(fā)布文章和頁(yè)面的接口
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');
return '插件安裝成功,請(qǐng)進(jìn)入設(shè)置填寫(xiě)準(zhǔn)入密鑰';
}
...
...
public static function render($contents, $class){
//do something
}
}
有代碼我們看到,在插件激活時(shí),系統(tǒng)將插件類(lèi)BaiduSubmitTest_Plugin的render方法綁定到finishPublish的接口上!由于finishPublish會(huì)傳遞兩個(gè)參數(shù),所以render方法也要接受兩個(gè)參數(shù)。
此時(shí),只要插件正常啟用,當(dāng)我們發(fā)布完某一篇文章后,系統(tǒng)就會(huì)自動(dòng)調(diào)用BaiduSubmitTest_Plugin:render()方法了。
仔細(xì)觀察源代碼,你會(huì)發(fā)現(xiàn)此接口沒(méi)有返回值,如果有返回值怎么辦?
這個(gè)情況比較復(fù)雜,老高先留個(gè)坑。
為什么叫render方法?
老高從hello world中復(fù)制粘貼過(guò)來(lái)的,一直沒(méi)有改名。
接下來(lái)做什么
掛載點(diǎn)搞定了,下一步就是執(zhí)行我們的核心邏輯代碼了。
老高就留到下一篇吧!
相關(guān)文章
一個(gè)好用的PHP驗(yàn)證碼類(lèi)實(shí)例分享
這篇文章主要介紹了一個(gè)好用的PHP驗(yàn)證碼類(lèi)實(shí)例,有需要的朋友可以參考一下2013-12-12php設(shè)計(jì)模式之適配器模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
這篇文章主要介紹了php設(shè)計(jì)模式之適配器模式,結(jié)合星際爭(zhēng)霸游戲案例形式分析了PHP適配器模式相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04PHP 網(wǎng)站修改默認(rèn)訪問(wèn)文件的nginx配置
這篇文章主要介紹了PHP 網(wǎng)站修改默認(rèn)訪問(wèn)文件的nginx配置,需要的朋友可以參考下2017-05-05Yii2結(jié)合Workerman的websocket示例詳解
這篇文章主要給大家介紹了關(guān)于Yii2結(jié)合Workerman的websocket的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09php模仿qq空間或朋友圈發(fā)布動(dòng)態(tài)、評(píng)論動(dòng)態(tài)、回復(fù)評(píng)論、刪除動(dòng)態(tài)或評(píng)論的功能(中)
這篇文章主要介紹了模仿qq空間或朋友圈發(fā)布動(dòng)態(tài)、評(píng)論動(dòng)態(tài)、回復(fù)評(píng)論、刪除動(dòng)態(tài)或評(píng)論的功能(中) ,需要的朋友可以參考下2017-06-06