入口 api/mobile/index.phpphp
功能比較簡單,指向source/plugins/mobile/mobile.php 或者check.php,check.php只有當相似$_GET['check'] == 'check'的狀況下才運行,返回系統基本信息;其餘請求均經過mobile.php接管。json
mobile.phpapi
mobile.php的基本思想是根據$_GET['module']以及$_GET['version']來調用相關的module文件,$_GET['version']參數能夠作到版本兼容。spa
mobile/api/%version%/%module%.php接口
實現至關簡單,根據需求設置$_GET['mod']等參數,而後將請求轉到Discuz網頁版頁面,完成請求。同時,文件中定義mobile_api類。ip
mobile_api類開發
mobile_api類包含兩個方法:common與output,common方法對應discuz的runhooks調用;output方法對應discuz的hookscriptoutput調用。源碼
流程io
Discuz調用runhooks時,調用mobile_plugin->common(),調用mobile_api->common()模板
Discuz在模板中調用hookscriptoutput()時,調用mobile_plugin->global_mobile(),調用mobile_api->output()
總結
Discuz大量使用$_G全局變量來保存系統運行過程當中的結果,這爲移動端內容輸出提供便利,只須要在模板輸出前截獲$_G變量,而後根據需求從$_G變量中提取所需數據,並使用json格式返回。這就是Discuz移動端接口的基本實現方式。