← 返回部落格 Mot

Mot

社群焦點:David Cochrum

認識 David Cochrumdotenv-vault-laravel 的創作者。他是一位專精於 PHP 和 JavaScript 的全端軟體工程師。

在這篇焦點文章中,我會問他一些關於 Laravel 以及 .env.vault 檔案格式的問題。

問題 1:Laravel 生態系統

您使用 Laravel 一段時間了,您觀察到框架及其生態系統發生了哪些重大變化?這些變化如何影響您的開發方法?

多年來使用 Laravel 的經驗,我看到它的便利性不斷提高,而學習曲線卻縮短了。顯然,Laravel 在其方法上相當主觀,但這些觀點涵蓋了絕大多數的使用情境,並且通常讓框架非常容易使用。

以建立、讀取、更新和刪除 (CRUD) 操作為例。大多數 Web 應用程式都是針對資源模型的 CRUD 操作。當 Laravel 引入資源控制器路由模型綁定時,它增加了極大的便利性。只要您遵循 Laravel 的慣例,大部分的樣板工作都會為您處理。這反過來使開發人員能夠在不必忍受枯燥的過程下,快速開發出更多功能。

我認為 Laravel 的普及很大程度上歸因於這些主觀的便利性。因此,現在幾乎所有常見的功能都可以通過 Packagist 和 GitHub 直接加入套件。第三方套件也受益於自動探索,以至於大多數套件只需包含 Composer 相依性即可加入。這些自動探索的套件在您的應用程式中的整合和設定毫不費力,通常只需要在安裝時進行修改。

現在,計算機科學的純粹主義者也會告訴您,Laravel 的某些慣例和便利性會以犧牲某些程式設計範式和原則為代價。雖然這是不可否認的事實,但以我個人淺見,Laravel 在原則和實用性之間取得了相當不錯的平衡。當然,Facades 是一個反模式的例子,但我認為,如果負責任地使用,其好處可以超過破壞規則的懲罰。

早期,當我剛開始真正的應用程式開發時,我上面的資深同事決定基於 Symfony 重建我們的應用程式。雖然這允許一些底層的便利性,但也決定 Symfony 驗證套件對我們的用途來說不夠好,因此,每個 CRUD 模組都需要針對其中的每個表單使用複雜的驗證器類別。我相信我們在重新發明一個相當不錯的輪子時浪費了相當多的開發人員時間/資源。現在回想起來,我認為這是一個巨大的錯誤。是的,這是一種更有原則的方法,但我認為我們並沒有從編寫自己的驗證器中獲得任何好處,而不是利用廣泛使用的套件。

問題 2:Laravel 的優勢

Laravel 以其優雅的語法和強大的功能而聞名。您能否分享一個您使用 Laravel 的經驗,它在您參與的專案中獨特地受益,或許是其他 PHP 框架無法做到的?

我認為,Laravel 最有價值的功能是它讓您比任何其他框架更快地從無到有地開發出最小可行產品 (MVP)。由於其受歡迎程度,許多社群套件也可以快速整合到您的專案中。例如,假設您需要將 OAuth 加入您的專案。使用其他框架或語言,通常需要大量的工作。而使用 Laravel,提供的 OAuth 套件 Fortify 已經完成了絕大部分的工作,只需要極少的精力即可整合。

問題 3:您使用 Laravel 的經驗

是什麼吸引您專精於 Laravel,它如何塑造您的開發人員之旅?在 Laravel 社群中,是否有任何您特別自豪的專案或成就?

我不會說我一定專精於 Laravel,但當我可以選擇時,它絕對是我的首選框架。我曾參與使用 Symfony、CodeIgniter v3、Zend v1 甚至早於所有其他框架的自家框架的專案。

很久以前,我的任務是擴展和維護各種行動應用程式的 API,這些應用程式都捆綁在一個 WordPress XMLRPC 外掛程式中。我在一個專案上獲得了更大的自由,並且我提出了我應該有時間學習並使用我剛聽說過的概念:物件導向程式設計 (OOP) 來構建下一個 API。我成功地說服了利害關係人,讓我有時間以這種方式學習和構建是值得的。我嘗試了許多框架,但在 Jeffrey Way 的 Laracasts 的幫助下,Laravel 看起來很自然,並且真正幫助我學習和採用了以前不知道的程式設計原則。

說到 Laracasts,我會認為這個專案和社群是 Laravel 最好的產出之一。我確信許多像我一樣的開發人員都是通過觀看這些影片和教學課程開始的。如果沒有 Laracasts,我肯定不會達到今天的成就。如果沒有 Laracasts,我也無法在我的 IDE 中如此有效率。

問題 4:Laravel 與 .env.vault

是什麼吸引您使用 .env.vault 機制?您認為它將如何影響 Laravel 生態系統?它對 Laravel 有用嗎?Laravel 有自己的 .env 檔案加密機制,在您看來,.env.vault 有何不同或更有用之處?

我目前正在處理一個 Zend Framework v1 單體專案,我的團隊和我正在嘗試將其現代化。這些應用程式使用 Zend 的 ini 檔案進行設定,這些設定也可以通過 .env 值覆蓋。我正在努力保護這些機密,使其更易於攜帶,同時開始將應用程式從 Zend 遷移到 Laravel 的過程。在尋找解決方案的過程中,我看到了 dotenv.org 及其用於安全儲存機密的金庫似乎符合我的需求。但是,我也看到了一個機會來撰寫 我的第一個 Laravel 套件,該套件只是封裝了 PHP Dotenv 程式庫,以便與框架進行簡單的整合。

我認為金庫機制對於那些正在尋找機密儲存解決方案的人來說可能很有用,這些解決方案可能在其託管提供商中無法使用或成本高昂。此外,dotenv.org 上提供的遠程同步功能,以及跨使用者帳戶的細緻訪問控制的潛力,增加了 Laravel 加密機制所缺少的重要價值。


感謝 David 的想法以及您對 Laravel 社群的 dotenv-vault-laravel 貢獻。

通過 RSS 訂閱 或關注我們的 @dotenvx 𝕏