終於,在可以保存配置信息後,咱們能夠開始編寫插件的掛載功能了。php
首先咱們須要知道系統爲咱們在各個關鍵的環節都預留了插件點給咱們,系統運行到插件點時,會檢測到是否有插件掛在這個點上,而後執行插件的邏輯!typecho
插件的工做就是找到合適的插件點,掛上去,而後執行本身的邏輯。this
插件點,插件鉤子,插件接口。。。在老高這兒是一個概念插件
官方的插件接口及功能列表code
咱們的插件須要執行的邏輯在這裏,Widget_Contents_Post_Edit類的finishPublish方法接口
文件路徑var/Widget/Contents/Post/Edit.php:736
,能夠看到,接口爲咱們傳遞了兩個參數,一個是發佈的內容,另外一個是類自己。有了類自己,咱們能夠在插件中隨意調用他的公共方法!get
php// 文章完成發佈插件接口 $this->pluginHandle()->finishPublish($contents, $this);
還有一個頁面發佈接口,下面的代碼會提到。it
代碼以下,有省略。io
php<?php class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface { public static function activate(){ //掛載發佈文章和頁面的接口 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 '插件安裝成功,請進入設置填寫准入密鑰'; } ... ... public static function render($contents, $class){ //do something } }
有代碼咱們看到,在插件激活時,系統將插件類BaiduSubmitTest_Plugin
的render方法綁定到finishPublish的接口上!因爲finishPublish會傳遞兩個參數,因此render方法也要接受兩個參數。鉤子
此時,只要插件正常啓用,當咱們發佈完某一篇文章後,系統就會自動調用BaiduSubmitTest_Plugin:render()
方法了。
仔細觀察源代碼,你會發現此接口沒有返回值,若是有返回值怎麼辦?
這個狀況比較複雜,老高先留個坑。
爲何叫render方法?
老高從hello world中複製粘貼過來的,一直沒有更名。
掛載點搞定了,下一步就是執行咱們的核心邏輯代碼了。
老高就留到下一篇吧!