818
支付寶
聊聊 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做準備。來吧!!!
開源代碼倉庫
GitHub:https://github.com/zhiyicx/thinksns-plus
(點擊star,每日關注開發動態。)
最後更新:2017-10-10 15:33:19
上一篇:
AliSQL 20171010版本發布 Sequence兼容PostgreSQL/Oracle語法和升級TLSv1.2
下一篇:
讓ATM瘋狂吐錢的黑客死了
[LeetCode]16.3Sum Closest
rhel6 64 bit flush plugin
Alibaba Single's Day Festival – An Evolution of Alibaba Cloud's Underlying Infrastructure
Android遊戲中添加音頻-詳解MediaPlayer與SoundPoo!並講解兩者的區別和遊戲中的用途!
[python爬蟲]scrapy+django+mysql爬大眾點評餐廳數據
如何快速在阿裏雲上構建自己的機器學習應用
全球最有價值100家私營科技公司榜單出爐
碼棧開發手冊(六)---實例演練(使用數據麵板和數據視圖)
雲服務被歸類為IDC業務 牌照問題終於有了答案!
NHOI 2004 寵物收養所 splay解法