Symfony可以安裝第三方套件(程序包、libraries等等),為專案帶來新的功能(service),透過預設放在目錄config/的設定檔案可以客製每一個套件。
Configuration: config/packages/
所有套件的設定都可以在config/packages/找到。舉例來說,framework程序包的設定檔案在config/packages/framework.yaml:// 省略程式碼最上層的鍵(key)(這邊指的是framework)會是針對特定程序包的設定(這個例子裡指的是FrameworkBundle)。
配置參考(Configuration Reference)和Dumping
有兩個方法可以知道有哪些鍵(key)可以設置:- 查看『參考』(原文)這個章節
- 使用指令config:dump-reference
php bin/console config:dump-reference framework
The parameters Key: Parameters (Variables)
配置文件中最特別的最上層鍵,一種被稱為parameters,用來定義可以被其他設定檔引用的變數(variables),例如,當你安裝一個translation套件,一個locale的parameter就會被加在檔案config/services.yaml內。// 省略程式碼這個parameter在framework的設定檔(config/packages/translation.yaml)裡可以參考(reference):
// 省略程式碼在設定檔內,你可以在parameters鍵底下定義任何想要的參數名稱(parameter name),若要參考parameter,在名稱的兩個加上百分比的符號 - 如:%locale%。
想要知道更多關於參數的資訊 - 包含如何在控制器裡參考這些參數 - 請看服務參數(原文)。
檔案.env和環境變數
載入檔案.env的內容成為環境變數(environment variables),在開發階段的時候,或設定環境變數對你來說很困難,都很方便。當你安裝套件時,更多的環境變數會加到這個檔案,當然你還是可以新增自己所需要的。
透過特定的語句,在其他設定檔都可以引用環境變數。舉例來說,如果你安裝doctrine套件,檔案.env裡會多一個環境變數叫DATABASE_URL,在檔案config/packages/doctrine.yaml裡可以這樣引用參數:
# config/packages/doctrine.yaml doctrine: dbal: url: '%env(DATABASE_URL)%' # The `resolve:` prefix replaces container params by their values inside the env variable: # url: '%env(resolve:DATABASE_URL)%'若要取得更多關於環境變數的訊息,請看『環境變數』(原文)。
檔案.env很特殊,因為它通常定義了在每個伺服器上需要更改的值,例如你本地端的開發環境,資料庫設定肯定和你的同事不同,檔案.env內包含所有環境變數之敏感、無法隱藏的默認值,且應該提交到你的儲存庫(Repository)。
如果要複寫這些根據伺服器或屬於敏感資料的環境變數,可以新建一個檔案.env.local,這將不會上傳到共享的儲存庫。事實上,Symfony自動產生的檔案.gitignore,避免將這些檔案上傳。
你也可以新增一些其他.env,一樣會被載入使用:
- .env.{environment}: 例如.env.test將會在環境test載入使用,並上傳。
- .env.{environment}.local: 例如.env.prod.local會在prod環境內載入,但不會上傳到儲存庫。
環境&其他設定檔
你有一個應用程式,但不管你有沒有發覺,你需要讓他在不同的時候有不同的表現:- 開發(developing)時,你會希望應用程式會紀錄所有內容並顯示在漂亮的除錯工具上。
- 在部屬到正式(production)環境後,你會希望應用程式在速度方便達到最佳化,且只需要顯示錯誤訊息。
你可能根本不知道dev環境是什麼就已經在使用了,在你部屬之後,你將會使用prod這個環境。
若要了解更多關於執行和控制每一個環境,請看『如何掌握和建立新環境』(原文)。
繼續前進!
恭喜!你已經了解基礎的Symfony,接著,按照指南了解Symfony的每個部分。查看:還有更多主題
閱讀更多
- How to Organize Configuration Files
- Nov 2018 Changes to .env & How to Update
- How to Master and Create new Environments
- How to Set external Parameters in the Service Container
- Understanding how the Front Controller, Kernel and Environments Work together
- Building your own Framework with the MicroKernelTrait
- How To Create Symfony Applications with Multiple Kernels
- How to Override Symfony's default Directory Structure
- Using Parameters within a Dependency Injection Class
文章原文:
https://symfony.com/doc/4.2/configuration.html
系列文章:
- Symfony4.2入門教學【第一篇】安裝
- Symfony4.2入門教學【第二篇】建立第一個頁面(Routes)
- Symfony4.2入門教學【第三篇】路由(Routes)
- Symfony4.2入門教學【第四篇】控制器(Controller)
- Symfony4.2入門教學【第五篇】模板(Templates)
沒有留言:
張貼留言