【開源社交系統ThinkSNS+研發日記】基於 Laravel Route 的 ThinkSNS+ Component
在前面,我介紹了擴充型別,分別有 plus-compnent 和 plus-plugin 兩個,這裡重點講以下如何實現 plus-component 的。
plus-component 是什麼
就如同名字一樣,plus 代表的是 ThinkSNS+ 程式,用 - 分割 後面的 component 就是「包」或者我們理解成應用。在這裡的「應用」指的是透過實現 API 或者 web 的功能。所以產生了這個型別。
但是 plus-component 不只是應用,也可以是簡單的功能擴充,例如medz/plus-storage-quniu就是擴充的七牛雲儲存。
composer 外掛的建立
既然涉及到路由,最開始的想法,其實是 /routes 目錄下生成檔案,包的路由檔案複製到這裡來。後來,發現了問題不足。
最後想到,plus-component 的實現,不一定是基於路由的應用,也有可能是簡單的擴充。我們看下中間外掛的介面類:
其中 router 成了非必需項。
轉而,擁有了三個 hook 方法 install、update 和 uninstall 方法,這三個分別對應的是安裝,升級,解除安裝。
而設計中,plus-component 中間外掛會在 Laravel 的 /config/component.php 中增加如下配置:
中間外掛的 composer.json 配置
其實很簡單,看到上面新增到 /config/component.php 的程式碼了, installer 項哪裡來的呢?看下 包的配置:
就是最後的 extra.installer-class 配置的,這裡是完整的 class name,這樣,在 composer 外掛執行的時候讀取這個額外的配置,並寫入到 Laravel 的配置檔案中。
install/update/uninstall
在 ThinkSNS+ 中有 php artisan component [install|update|unstall] vendor/name 這樣一個命令,主要是用作 包的安裝,升級,解除安裝。
實際執行如下:
透過這樣的方式安裝包,而這個命令會讀取 /config/component.php 的配置,從而得到 installer ,這樣,在執行不同的引數的時候後,呼叫 install,uodate,uninstall 等 需求 hook 達到目的。
router
在最上面的介面類中你也看到了,有一個 router 方法,這個方法返回型別有兩個 void|string,所以, void 代表沒有路由,string 就表示包路由檔案的絕對地址。
在 php artisan component 命令執行的時候,對應的新增 /config/component_routes.php 裡面的配置。
在 /app/Providers/RouteServiceProvider.php 中如下:
可能你會誤會,為什麼只是 include 進來呢?是的,這裡的程式碼其實是參照 Route::group 來的,而在包裡面的檔案,可以正常的使用 Route::* 進行路由配置。
resource
既然可以基於路由,那就必然會存在靜態資源的問題,在介面類中也有這樣的規定:
這裡返回在包中靜態資源儲存的目錄,執行安裝或者升級命令的時候複製到 /public/vendor/name 目錄下來達到靜態資源釋出的功能。
更高階的封裝
這裡其實是隻模式封裝,在 ThinkSNS+ 的 php artisan component 其實還有一個 --link 引數,做什麼用的?其實不難理解,就是吧靜態資源由原來的複製變成建立軟鏈。這在開發過程中很有用。
開源版原始碼官方正版獲取唯一渠道:關注公眾號“thinksns”,回覆“開源版”即可獲得最新原始碼壓縮檔案地址。
開原始碼倉庫:
GitHub:(點選星,每日關注開發動態。)
官網:
內測申請方式
提供個人/企業聯絡方式及認證資訊(實名ID /企業營業執照照片或掃描件)及申請說明,傳送郵件至lihecong@zhishisoft.com將有機會獲得首批內測資格,名額有限,申請從速。
開源不易,為了爭取開源,我們團隊做了很多努力。把基於Laravel的作品展示在大家面前,之後專欄會持續不斷的分享ThinkSNS +開發過程中的技術細節。
下期預告:下一篇文章,會簡單的講以下 ThinkSNS+ 自封裝的命令實現。
能看見這裡的,一定是真愛~謝謝你們的愛
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31448874/viewspace-2138976/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 Laravel Route 的 ThinkSNS+ ComponentLaravel
- 社交系統ThinkSNS+ 0.7.3研發週報
- 基於 Laravel 的 ThinkSNS+ alpha.2 版本釋出【研發日記六】Laravel
- 如何做到 Laravel 配置可以網站後臺配置【社交系統ThinkSNS+研發日記四】Laravel網站
- ThinkSNS+軟體系統研發日記 2月(上)
- 社交 App 系統 ThinkSNS+ PHP 開發概述APPPHP
- 【研發日記五】解密社交系統ThinkSNS+如何計算字元顯示長度!解密字元
- 基於 Laravel 開發 ThinkSNS+ 中前端的抉擇(webpack/Vue)踩坑日記Laravel前端WebVue
- 社交系統ThinkSNS+技術概要
- 社交系統 ThinkSNS+ 技術概要
- 社交系統ThinkSNS+ 效能簡述
- 【社交系統研發日記六】ThinkSNS+ alpha.2 版本釋出,快來看看都有些什麼
- 開源社交系統ThinkSNS+ V2.2-V2.3升級指南
- 社交系統 ThinkSNS+ 3.0 更新播報
- 社交系統ThinkSNS+安裝部署演示
- 社交系統ThinkSNS+第4階段IOS端研發更新發布播報iOS
- 開源社交系統ThinkSNS+和ThinkSNS V4有什麼區別
- 社交系統ThinkSNS+ V1.9.1更新播報
- SNS社交系統ThinkSNS+安裝部署演示影片!
- 社群系統ThinkSNS+ PC端最新研發播報!
- ThinkSNS+ 基於 Laravel master 分支,從 1 到 0,再到 0.1LaravelAST
- 基於 Laravel 開發過程中,ThinkSNS+ 是如何做到 Laravel 配置可以網站後臺配置的。Laravel網站
- 社交系統 ThinkSNS+ V2.2-V2.3 版本升級指南
- [開源專案] 基於 laravel 開發的一個 社群/社交 小程式Laravel
- 社群系統ThinkSNS+第3階段更新發布
- Laravel 5.5 釋出,ThinkSNS+ 升級以及狀況分享。Laravel
- 社交系統/社群系統“ThinkSNS+”H5及PC端即將內測!一起來“找茬”H5
- 社交系統ThinkSNS+從V0.8.7到V0.8.9我們到底修復了多少個bug?
- 基於laravel及layui開發的後臺管理系統 -- laravel-wjfcmsLaravelUI
- 關於 ThinkSNS+ 程式的 SPA(H5)安裝教程H5
- Laravel+vue免費開源的基於RABC控制的部落格系統LaravelVue
- 基於laravel的流程引擎偷偷開源了Laravel
- 社交系統ThinkSNS Plus 1.0.0-alpha.7 釋出,基於 Laravel 的使用者生態系統Laravel
- 一款基於Laravel5.8開發的通用後臺管理系統Laravel
- 社群系統ThinkSNS+第4階段安卓端更新播報安卓
- f-admin——基於 Laravel 框架開發的基礎許可權後臺系統Laravel框架
- python菜鳥開發日記-基於pyhon及django進行公司打卡系統的破解PythonDjango
- 你們發現ThinkSNS+ V0.8.9已悄悄釋出了嗎?