In this post to his site Matt Stauffer shows a more real-word example of how the phpdotenv library can make configuration of your application simpler. He shows how it can be applied to a Craft CMS installation to manage domain-specific configuration details.
Craft is a fantastic CMS, but every CMS shows some pain points when you have a large team working on the same site at the same time. One of these points for me is Craft's native multi-environment configuration options, which allow you to define configuration options based on the domain name.
[...] This is great, but it's limited: You're hard-coding the configuration details into your code, which sometimes means putting sensitive information into your version control. Every developer's local installs either all have to have different domains, or if they use the same domain they need to all have the same configuration settings. And something just feels dirty about the codebase having such knowledge of every place it's going to be deployed.
He introduces the phpdotenv library and how you define its simple
.env file with a basic INI structure. He then shows how to add the phpdotenv library to your installation:
- adding it to the list of Composer installed libraries
- update your front controller to load the configuration
- define the .env file with your settings
- ignore it via .gitignore
With these steps in place you can then update the Craft configuration with calls to
getenv in all the right places to pull items from the phpdotenv configuration.