摘要:微博墻就是這樣的一個工具,這不是一款普通的插件,這是一款搭建在基于的插件。這是一款基于的插件,底層語言開發(fā),性能卓越。
在現(xiàn)在移動互聯(lián)網(wǎng)時代,微博已經(jīng)成為了每個人生活中必不可少的一個社交工具。而WordPress是全世界最為流行的博客系統(tǒng),把你的博客接入新浪微博,借助微博的強大用戶群,不僅能給你的網(wǎng)站提供巨大的流量,而且還能帶來不可估量價值。
WordPress微博墻就是這樣的一個工具,這不是一款普通的插件,這是一款搭建在SAE基于Yar的插件。它非常的輕量,它不像其他的插件那樣,提供了非常多華麗卻不實用的功能,不僅臃腫而且拖慢速度。這是一款基于Yar的插件,底層C語言開發(fā),性能卓越。而且拓展性很好,可以給你提供一下功能:
1.個人微博墻
2.發(fā)布文章同步到新浪微博
3.文章評論同步到新浪微博
接下來介紹一下基本結(jié)構:
這個類在Dao.class.php文件中,它是插件的核心,負責去服務端獲取數(shù)據(jù)
/** * * 用戶數(shù)據(jù)獲取類 * @author 夏天 * @date 2015年6月28日 * @site http://www.xtwind.com * */ class Dao{ /** * 微博RPC操作對象 */ private $client; /** * 用戶標識 */ private $mark; /** * 構造函數(shù)設置用戶標識 */ function __construct($state); /** * 返回用戶標識 */ public function getMark(); /** * 啟用插件 * @return 成功返回true,失敗返回認證地址 */ public function run(); /** * 獲取授權情況 * @return string 返回過期時間,未登錄或者過期返回false */ public function getAuthOver(); /** * 刪除授權 * @return boolean */ public function delAuth(); /** * 獲取認證跳轉(zhuǎn)url * @return string */ public function getAuthUrl(); /** * 獲取用戶微博列表 * @return array */ public function getWeibo(); /** * 獲取用戶基本信息 * @return array */ public function getUser(); /** * 發(fā)布微博 * @return Array 返回微博數(shù)據(jù)數(shù)組 */ public function weiboPub($content,$imgUrl=null); /** * 刪除微博 * @param int 微博ID * @return Array 返回被刪除微博數(shù)據(jù)數(shù)組 */ public function weiboDel($weiboID); /** * 發(fā)布一條評論過 * @param int 微博ID * @param string 評論內(nèi)容 * @return array 評論相關數(shù)組 */ public function sendComment($id,$comment); /** * 關注一個用戶 * @param 用戶ID或者名字 * @return 返回關注者信息 */ public function followUser($user); /** * 轉(zhuǎn)發(fā)微博 * @param int 微博id * @param string 添加的內(nèi)容 */ public function forwardWeibo($id,$text=null); }2 插件實體類
該類是插件的實體,在Plugins.class.php中定義,負責調(diào)用Dao類來實現(xiàn)各種功能,包括輸入輸出,用戶配置,授權管理
/** * 插件實體類 * @Author:Summer * @data: 2015-06-28 * @site: http://www.xtwind.com */ class Plugins{ /** * 數(shù)據(jù)獲取類對象 */ private $dao; /** * 插件顯示別名 */ private $slug = "weibo-wall"; /** * 插件頁url */ private $plugUrl ; /* * 插件構造 * @param 用戶數(shù)據(jù)操作類 */ public function __construct(Dao $obj); /** * 啟用插件,注冊鉤子,調(diào)用用戶函數(shù),刪除授權,發(fā)表微博 * @param array 插件設置選項關聯(lián)數(shù)組,key必須為對應的操作方法,該數(shù)組中的鍵會被注冊為wordpress相應鉤子 * @param array 需要過濾的動作,該數(shù)組中鍵不會被注冊為鉤子,但是會作為方法被調(diào)用,值為方法的參數(shù) */ public function run($arr1=null,$arr2=null); /** * 插件主頁顯示 */ public function display_function(); /** * 新文章同步發(fā)布微博 * @param int 文章ID */ public function publish_post($postID); /** * 刪除文章同步刪除微博 * @param int 文章ID */ public function before_delete_post($postID); /** * 收到評論同步到微博評論 * @param id 評論id */ public function comment_post($commentID); /** * 關注作者 */ public function follow_author($userid); /** * 用戶微博數(shù)據(jù)獲取 */ public function weiboOuput( $atts=null, $content = null ); /** * 數(shù)據(jù)頁面輸出 */ public function showWeibo(); /** * 圖片URL處理 * @param string */ private function getOriginalUrl($url); /** * 時間轉(zhuǎn)換 * @param string */ private function Sec2Time($time); /** * 插件設置key獲取 * @param string 需要設置的key */ private function setting_key($key,$func=false); /** * 插件設置value獲取 * @param string 需要獲取的value */ private function get_setting($key,$func=false); /** * 插件設置刪除 */ private function del_setting(); /** * 提示信息 * @param string */ private function noticeMsg($msg); }3 服務端認證操作
該接口定義所有用戶認證需要的操作,包括獲取授權,刪除授權,檢查授權等,在AuthDao.php定義
/** * 認證操作類接口 * @author 夏天 * @date 2015年6月18日 * @site http://www.xtwind.com */ interface AuthDao{ /** * 設置用戶AccessToken * @return boolean */ public function setAccessToken(); /** * 獲取用戶AccessToken * @return String */ public function getAccessToken(); /** * 刪除用戶AccessToken * @return boolean */ public function delAccessToken(); /** * 判斷用戶AccessToken是否存在 * @return boolean */ public function isLogin(); /** * 獲取認證跳轉(zhuǎn)url * @return string */ public function getAuthUrl(); /** * 授權過期時間 * @return string */ public function getAuthOver(); }4 服務端微博操作
該接口定義所有與用戶微博操作相關的方法,包括發(fā)表微博,讀取微博,讀取信息,刪除微博等等,在WeiboDao.php定義
/** * 微博操作類接口 * @author 夏天 * @date 2015年6月18日 * @site http://www.xtwind.com */ interface WeiboDao { /** * 獲取用戶微博信息列表 * @param int 獲取數(shù)量 * @param int 類型過濾 0:全部、1:原創(chuàng)、2:圖片、3:視頻、4:音樂,默認為0。 * @return String */ public function getWeibo(); /** * 獲取用戶基本信息 * @return Array */ public function getUser(); /** * 發(fā)布微博 * @return Array 返回微博數(shù)據(jù)數(shù)組 */ public function weiboPub($content,$imgUrl); /** * 刪除微博 * @return Array 返回被刪除微博數(shù)據(jù)數(shù)組 */ public function weiboDel($weiboID); /** * 發(fā)布一條評論 * @param integer 微博ID * @param string 評論內(nèi)容 */ public function sendComment($id,$comment); /** * 關注一個用戶 * @param 用戶ID或者名字 * @return 返回關注者信息 */ public function followUser($user); /** * 轉(zhuǎn)發(fā)微博 * @param int 微博id * @param string 添加的信息 */ public function forwardWeibo($id,$text=null); }5 服務端數(shù)據(jù)提供接口
該接口負責提供數(shù)據(jù)給客戶端,以及一些客戶端需要的操作,繼承于微博操作接口,在APIDao.php中定義
/** * 對外提供服務類接口,繼承于微博操作接口 * @author 夏天 * @date 2015年6月18日 * @site http://www.xtwind.com */ interface DaoAPI extends WeiboDao{ /** * 刪除用戶AccessToken * @return boolean */ public function delAccessToken(); /** * 判斷用戶AccessToken是否存在 * @return boolean */ public function isLogin(); /** * 獲取認證跳轉(zhuǎn)url * @return string */ public function getAuthUrl(); /** * 授權過期時間 * @return string */ public function getAuthOver(); }6 服務端回調(diào)操作
該類封裝與微博開放平臺通信獲取用戶AccessToken后的回調(diào)操作
class Callback { /** * 微博認證類對象 */ private $authObj; /** * 構造函數(shù) * @param AuthDaoImpl 微博認證對象 */ public function __construct(AuthDaoImpl $obj); /** * 認證回調(diào)操作,保存AccessToken * @return boolean */ public function callback(); }7 服務端應用入口
該入口主要是分發(fā)回調(diào)請求,以及創(chuàng)建RPC實例
if($_GET["code"]){ $keys = array( "code" => $_GET["code"], "redirect_uri" => APP_CALLBACK ); $back = new Callback(new AuthDaoImpl($_GET["state"],$keys)); if($back->callback()){ header("Location: ".$_GET["state"]."/wp-admin/options-general.php?page=weibo-wall"); } exit; } if($_GET["user"]){ $server = new Yar_Server(new API($_GET["user"])); try{ $server->handle(); }catch(Exception $e){ echo "感謝您使用微博墻!"; } }7 客戶端應用入口
該入口實例化插件實體類,并且啟用插件
$plu = new Plugins(new Dao(get_bloginfo( "url" ))); $plu -> run(get_option("weibo_wall"),get_option("weibo_func"));8 總結(jié)
整個過程就是這樣,業(yè)務邏輯非常簡單,代碼也很易懂。在使用的過程發(fā)覺Yar真的很簡單實用,而且是可并行化的。不過在這里并沒有體現(xiàn)出來,可以再做一些優(yōu)化處理。該插件的客戶端依賴于Yar框架,這是一個基于C語言開發(fā)的拓展。但是沒有該框架拓展也沒關系,我們已經(jīng)給出了Yar的純PHP實現(xiàn),你完全可以不去理會這個就能使用,但還是建議你使用Yar。
插件在設計的時候只提供了很少的功能,但是有些人需要其他的功能,那怎么辦呢?這方面我們也是有考慮,所以在設計的時候該插件的拓展性非常良好,不過你要有一些PHP編程的功底。
如何拓展他的功能?
1.聯(lián)系作者,告訴你需要的功能
2.作者開發(fā)相應的數(shù)據(jù)API
3.你在本地Dao.class.php調(diào)用API
4.在Plugins.class.php中獲取數(shù)據(jù)并執(zhí)行相應業(yè)務邏輯
作者博客:http://www.xtwind.com
原文地址:http://www.xtwind.com/yar-wordpress-twitter-wall-plug-in.html
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/21082.html
摘要:惠新宸是核心開發(fā)者,,的主要開發(fā)者。我在本科畢業(yè)的時候,也嘗試找了一些開發(fā)工作,面試了幾個單位,都被拒了,也許在當時面試我的那些人眼里,我就是一個不適合編程的人吧。 非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/142454 惠新宸@Laruence,是國內(nèi)最有影響力的PHP技術專家,PHP開發(fā)組核心成...
摘要:上周去了杭難得回杭州匆匆忙忙還去了一次西湖半年多沒去了我被勾起了思緒想去看看只是到了斷橋邊天黑什么都看不到而且以前在杭州從沒住過賓館感覺又不一樣了順帶吐槽下沙和杭電呆在杭州兩天回來以后雖然折騰半天但下車就已經(jīng)疲憊了加上中間之類的事情熬夜還感 上周去了杭 JS, 難得回杭州, 匆匆忙忙還去了一次西湖 半年多沒去了, 我被勾起了思緒想去看看, 只是到了斷橋邊天黑什么都看不到 而且以前在杭州...
摘要:既然對感覺不錯,那為什么要把博客從遷移到上呢。可以參考此文檔進去可以選擇中文安裝所有必備的應用程序安裝完成后,即可使用安裝。插件安裝完成后,執(zhí)行下列命令來遷移所有文章。部署代碼到清除緩存文件和已生成的靜態(tài)文件。 偶然的機會看到了Hexo,就深深被吸引了,加載速度快,支持Makedown,還支持部署到Github上。作為一位PHP程序員,之前的博客用的是PHP開發(fā)的WordPress,其...
摘要:為了解決這一系列問題,微博從年開發(fā)了語言的框架,并基于此完成了服務化改造。這些經(jīng)歷之下微博也積累了一套服務治理型的服務化體系。的版,所要解決的是微博平臺內(nèi)部服務之間的調(diào)用,因此協(xié)議時,其實并沒有考慮到跨語言的問題,用的是對比較友好的。 showImg(https://segmentfault.com/img/remote/1460000012601596?w=1080&h=606); ...
閱讀 1820·2021-11-23 09:51
閱讀 927·2021-10-08 10:05
閱讀 3421·2021-09-26 09:55
閱讀 1030·2021-09-22 15:21
閱讀 1626·2021-09-09 09:33
閱讀 1236·2019-08-30 15:56
閱讀 1275·2019-08-30 15:55
閱讀 958·2019-08-30 13:19