聊聊 Laravel 5.5 的 「自動發現」和此刻心情
看了Taylor Otwell發表的Package Auto-Discovery In Laravel 5.5第一反應是
為啥。。。
也怪我,在開發之前忘記看5.5的開發程式碼動態,之前的文章中也提到過,在ThinkSNS+開發場景中,我們不可能讓使用者去 config/app.php 修改配置,所以為了解決載入包的問題,我們開發了Laravel服務提供者的增強版可以看plus/doc/pakcage
是的,增強版的服務提供者,增加功能如下:
l 可以友好的載入其他「服務提供者」(這在開發包的時候需要依賴其他laravel擴充包很有用)
l 服務提供者轉到composer.json配置(無需修改配置了)
l 針對包更友好的publish(Laravel的vendor:publish要求輸入服務提供者類,我們的只要求輸入包名稱)
l 處理器,簡化版的命令列,可以用一個函式寫一個簡單的處理方法。
看到第二個就知道了,和laravel 5.5的自動發現類似,我們是在 bootstrap/cache/providers.php 中記錄服務提供者資訊,而Laravel 5.5是在vendor目錄中查詢後寫入到 bootstrap/cache/package.php 。
是的,我們的實現思路差不多,但我們支援更多功能。從這裡讀取服務提供者列表,然後在 Illuminate\Foundation\Application::registerConfiguredProviders 函式中合併服務提供者,然後載入,從服務提供者中還可以繼續載入服務提供者。
說下我的心情,大概是這樣:,又喜又悲~
開心,高興,Laravel更易用了,另一個心情;
惆悵,因為我在ThinkSNS+中開發了這一特性後,公司包幾乎都是以這種方式實現的。
你會說,把這些包配置欄位設定下不就好了嘛?可是,在這種方式沒定型之前,已經修改過一次,難道一個多月後又要修改一次?慘不忍睹呀!!!我怕我會被揍,想想就有點痛。
今天在群裡說這個話題,某開發者:“哈哈,我終於開發了畫中畫功能”,然後谷歌:“Android 8 原生支援”。其實道理一樣的,並不是因為官方原生支援了不好,而是在糾結,用官方的?還是繼續維護自己的?自己的不一定有官方好,官方支援更穩定。
總結,我們覺得廢棄掉現在的安裝器(bootstrap/cache/providers.php 是由Composer安裝器外掛寫入的),然後增加一份程式碼,從vendor目錄匹配出來,寫入到 bootstrap/cache/package.php 中去,只為5.5做準備。來吧!!!
開原始碼倉庫
內測申請方式
提供個人/企業聯絡方式及認證資訊(實名ID/企業營業執照照片或掃描件)及申請說明,傳送郵件至lihecong@zhishisoft.com即可獲得內測資格,申請從速。
歡迎各位關注者透過郵件,以圖+文的形式傳送至官方郵箱lihecong@zhishisoft.com反饋發現的問題,備註機型及系統版本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31448874/viewspace-2140683/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我獨自走進 Laravel5.5 的❤(二)Laravel
- 我獨自走進 Laravel5.5 的❤(一)Laravel
- Laravel5.5 和 5.2 env 取值問題Laravel
- 基於Laravel5.5的模組化開發Laravel
- Laravel 是自動發現擴充套件包是怎樣實現的Laravel套件
- 使用 Laravel 5.5+ 更好的來實現 404 響應Laravel
- 聊聊 Android 開發的現狀和思考Android
- 聊聊springboot自動裝配出現的TypeNotPresentExceptionProxy異常排查Spring BootException
- Laravel5.5+dingo+JWT 開發後臺 APILaravelGoJWTAPI
- Laravel5.5 + Vue 開發單頁應用LaravelVue
- 聊聊 Interface 在 Laravel 開發中的使用Laravel
- Laravel 5.5 validator 使用 request fromLaravel
- [原] php + Laravel 實現部署自動化PHPLaravel
- 使用 Git 實現 Laravel 專案的自動化部署GitLaravel
- laravel 5.5 折騰 node 15 的經歷Laravel
- laravel自動路由Laravel路由
- zabbix自動發現
- 分享 Laravel5.5 與 Dingo 配合遇到的坑LaravelGo
- 利用 webhook 實現 Git 自動部署 Laravel 程式碼WebHookGitLaravel
- 交換機統一監控和遠端控制:自動發現、自動監控、自動告警、自動修復
- 聊聊UI自動化的PageObject設計模式UIObject設計模式
- Zabbix 5.0:磁碟自動發現和讀寫監控
- node v15.3 折騰 laravel 5.5 的經歷Laravel
- 心情
- Laravel5.5執行表遷移命令出現表為空的解決方案Laravel
- 採用docker-compose和consul-template實現nginx自動發現自動註冊-微服務治理DockerNginx微服務
- Laravel5.5 新專案建立步驟Laravel
- Jenkins + GitLab + Xcode + Fir 實現iOS自動打包和分發JenkinsGitlabXCodeiOS
- 聊聊 ab 和 jmeter 的併發模型JMeter模型
- 基於 Laravel5.5 和 layui 包含基礎 RBAC 許可權的管理後臺LaravelUI
- 研究顯示只有5.5%的被發現漏洞曾遭到利用
- Laravel5.5 JSON 響應出現浮點小數溢位問題LaravelJSON
- 關於laravel 框架實現路由自動注入解決方法Laravel框架路由
- 聊聊 PC 端自動化最佳方案 - WinAppDriverAPP
- 聊聊 PC 端自動化最佳方案 - Pywinauto
- Laravel自動依賴解析的實現,其實是PHP對映解析LaravelPHP
- 有誰做 flutter 的自動化的嗎?出來聊聊Flutter
- # Laravel 5.5 升級到 6.0 踩坑記錄Laravel
- Laravel 5.5 使用 Passport 服務做 API 認證LaravelPassportAPI