Provides a class for working with Drupal environments and environment variables.
This also standardizes some environment terminology between hosting providers so that you can use the same code across different hosts:
Environment | Acquia | Pantheon |
---|---|---|
Production | prod |
live |
Staging | test |
test |
Development | dev |
dev |
use DrupalEnvironment\Environment;
$value = Environment::get('VARIABLE_NAME');
The advantages of using this is the results are statically cached.
use DrupalEnvironment\Environment;
// These all return a boolean true/false
Environment::isPantheon();
Environment::isAcquia();
Environment::isTugboat();
Environment::isGitHubWorkflow();
Environment::isGitLabCi();
Environment::isCircleCi();
use DrupalEnvironment\Environment;
// This gets the specific environment string.
$environment = Environment::getEnvironment();
// These all return a boolean true/false
Environment::isProduction();
Environment::isStaging();
Environment::isDevelopment();
Environment::isCi();
Environment::isLocal(); // Covers both DDEV and Lando
Environment::isDdev();
Environment::isLando();
use DrupalEnvironment\Environment;
// This returns a boolean true/false:
Environment::commandExists('composer');
use DrupalEnvironment\Environment;
if (Environment::isProduction()) {
// Set some production environment settings overrides.
}
elseif (Environment::isStaging()) {
// Set some staging environment settings overrides.
}
elseif (Environment::isDevelopment()) {
// Set some development environment settings overrides.
}
elseif (Environment::isLocal()) {
// Set some development environment settings overrides.
}
// Include a environment-specific settings file.
if ($environment = Environment::getEnvironment()) {
$settings_file = 'settings.' . $environment . '.php';
if (is_file($settings_file)) {
require_once $settings_file;
}
}