現在のモバイル インターネット時代において、Weibo はすべての人の生活に欠かせないソーシャル ツールとなっています。 WordPress は世界で最も人気のあるブログ システムです。ブログを新浪微博に接続し、微博の強力なユーザー ベースを活用すると、ウェブサイトに膨大なトラフィックを提供するだけでなく、計り知れない価値ももたらします。
WordPress Weibo Wall はそのようなツールです。これは普通のプラグインではなく、SAE と Yar をベースにして構築されたプラグインです。豪華ではあるが非実用的な機能を多数提供し、肥大化するだけでなく速度も低下する他のプラグインとは異なり、非常に軽量です。これは Yar に基づいたプラグインであり、基礎となる C 言語で開発されており、優れたパフォーマンスを備えています。非常に拡張性が高く、次の機能を提供します:
1. 個人 Weibo ウォール
2. 記事を公開して Sina Weibo に同期
3. 記事のコメントを Sina Weibo に同期
次に、基本構造を紹介します:
1 コア データ操作クラス
このクラスは Dao.class.php ファイル内にあり、プラグインのコアであり、サーバーからのデータの取得を担当します
/** * * 用户数据获取类 * @author 夏天 * @date 2015年6月28日 * @site http://www.xtwind.com * */ class Dao{ /** * 微博RPC操作对象 */ private $client; /** * 用户标识 */ private $mark; /** * 构造函数设置用户标识 */ function __construct($state); /** * 返回用户标识 */ public function getMark(); /** * 启用插件 * @return 成功返回true,失败返回认证地址 */ public function run(); /** * 获取授权情况 * @return string 返回过期时间,未登录或者过期返回false */ public function getAuthOver(); /** * 删除授权 * @return boolean */ public function delAuth(); /** * 获取认证跳转url * @return string */ public function getAuthUrl(); /** * 获取用户微博列表 * @return array */ public function getWeibo(); /** * 获取用户基本信息 * @return array */ public function getUser(); /** * 发布微博 * @return Array 返回微博数据数组 */ public function weiboPub($content,$imgUrl=null); /** * 删除微博 * @param int 微博ID * @return Array 返回被删除微博数据数组 */ public function weiboDel($weiboID); /** * 发布一条评论过 * @param int 微博ID * @param string 评论内容 * @return array 评论相关数组 */ public function sendComment($id,$comment); /** * 关注一个用户 * @param 用户ID或者名字 * @return 返回关注者信息 */ public function followUser($user); /** * 转发微博 * @param int 微博id * @param string 添加的内容 */ public function forwardWeibo($id,$text=null); }
2 プラグイン エンティティ クラス
このクラスは、Plugins.class.php で定義されたプラグインのエンティティであり、呼び出しを担当します。 Dao クラスを使用して、入出力、ユーザー構成、認可などのさまざまな機能を実装します。管理
/** * 插件实体类 * @Author:Summer * @data: 2015-06-28 * @site: http://www.xtwind.com */ class Plugins{ /** * 数据获取类对象 */ private $dao; /** * 插件显示别名 */ private $slug = 'weibo-wall'; /** * 插件页url */ private $plugUrl ; /* * 插件构造 * @param 用户数据操作类 */ public function __construct(Dao $obj); /** * 启用插件,注册钩子,调用用户函数,删除授权,发表微博 * @param array 插件设置选项关联数组,key必须为对应的操作方法,该数组中的键会被注册为wordpress相应钩子 * @param array 需要过滤的动作,该数组中键不会被注册为钩子,但是会作为方法被调用,值为方法的参数 */ public function run($arr1=null,$arr2=null); /** * 插件主页显示 */ public function display_function(); /** * 新文章同步发布微博 * @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); /** * 用户微博数据获取 */ public function weiboOuput( $atts=null, $content = null ); /** * 数据页面输出 */ public function showWeibo(); /** * 图片URL处理 * @param string */ private function getOriginalUrl($url); /** * 时间转换 * @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(); /** * 获取认证跳转url * @return string */ public function getAuthUrl(); /** * 授权过期时间 * @return string */ public function getAuthOver(); }
4 サーバー側 Weibo 操作
このインターフェースは、Weibo の公開を含む、ユーザーの Weibo 操作に関連するすべてのメソッドを定義します。 、Weibo の読み取り、情報の読み取り、Weibo の削除など、WeiboDao で PHP 定義
/** * 微博操作类接口 * @author 夏天 * @date 2015年6月18日 * @site http://www.xtwind.com */ interface WeiboDao { /** * 获取用户微博信息列表 * @param int 获取数量 * @param int 类型过滤 0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。 * @return String */ public function getWeibo(); /** * 获取用户基本信息 * @return Array */ public function getUser(); /** * 发布微博 * @return Array 返回微博数据数组 */ public function weiboPub($content,$imgUrl); /** * 删除微博 * @return Array 返回被删除微博数据数组 */ public function weiboDel($weiboID); /** * 发布一条评论 * @param integer 微博ID * @param string 评论内容 */ public function sendComment($id,$comment); /** * 关注一个用户 * @param 用户ID或者名字 * @return 返回关注者信息 */ public function followUser($user); /** * 转发微博 * @param int 微博id * @param string 添加的信息 */ public function forwardWeibo($id,$text=null); }
5 サーバー データ提供インターフェイス
このインターフェイスは、クライアントにデータを提供する責任を負います。クライアントに必要な一部の操作。Weibo 操作インターフェイスから継承され、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(); /** * 获取认证跳转url * @return string */ public function getAuthUrl(); /** * 授权过期时间 * @return string */ public function getAuthOver(); }
6 サーバー側コールバック操作
このクラスは、クライアントと通信した後のコールバック操作をカプセル化します。ユーザー AccessToken を取得するための Weibo オープン プラットフォーム
class Callback { /** * 微博认证类对象 */ private $authObj; /** * 构造函数 * @param AuthDaoImpl 微博认证对象 */ public function __construct(AuthDaoImpl $obj); /** * 认证回调操作,保存AccessToken * @return boolean */ public function callback(); }
7 サーバー側アプリケーションの入り口
この入り口は主にコールバック リクエストの配布と 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 概要
プロセス全体は次のようになります。ビジネス ロジックは非常に複雑です。シンプルでコードも理解しやすいです。使用プロセス中に、Yar は非常にシンプルで実用的であり、並列化できることがわかりました。ただし、ここでは反映されておらず、いくつかの最適化を行うことができます。このプラグインのクライアントは、C 言語に基づいて開発された拡張機能である Yar フレームワークに依存しています。ただし、このフレームワーク拡張機能がなくても問題ありません。Yar の純粋な PHP 実装がすでに提供されています。特に意識せずに使用することもできますが、それでも Yar を使用することをお勧めします。
このプラグインはいくつかの機能のみを提供するように設計されていますが、他の機能が必要な場合はどうすればよいでしょうか?この点も考慮されているため、プラグインは設計時に非常にスケーラブルですが、ある程度の PHP プログラミング スキルが必要です。
機能を拡張するにはどうすればよいですか?
1. 作者に連絡して必要な機能を伝えてください
2. 作者が対応するデータ API を開発します
3. API はローカルの Dao.class.php
4 で呼び出しますプラグイン内 class.php 内のデータを取得し、対応するビジネス ロジックを実行します