聊聊 Laravel 5.5 的 「自動發現」和此刻心情

ThinkSNS發表於2017-06-13


看了Taylor Otwell發表的Package Auto-Discovery In Laravel 5.5第一反應是

為啥。。。

也怪我,在開發之前忘記看5.5的開發程式碼動態,之前的文章中也提到,在ThinkSNS+開發場景中,我們不可能讓使用者去 config/app.php 修改配置,所以為了解決載入包的問題,我們開發了Laravel服務提供者的增強版可以看plus/doc/pakcage

是的,增強版的服務提供者,增加功能如下:

可以友好的載入其他「服務提供者」(這在開發包的時候需要依賴其他laravel擴充包很有用)

服務提供者轉到composer.json配置(無需修改配置了)

針對包更友好的publishLaravelvendor:publish要求輸入服務提供者類,我們的只要求輸入包名稱)

處理器,簡化版的命令列,可以用一個函式寫一個簡單的處理方法。

看到第二個就知道了,和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做準備。來吧!!!

開原始碼倉庫

GitHub:(點選star,每日關注開發動態。)

內測申請方式

提供個人/企業聯絡方式及認證資訊(實名ID/企業營業執照照片或掃描件)及申請說明,傳送郵件至lihecong@zhishisoft.com即可獲得內測資格,申請從速。

歡迎各位關注者透過郵件,以圖+文的形式傳送至官方郵箱lihecong@zhishisoft.com反饋發現的問題,備註機型及系統版本。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31448874/viewspace-2140683/,如需轉載,請註明出處,否則將追究法律責任。

相關文章