phpgt / config
Manage configuration with ini files and environment variables.
Fund package maintenance!
PhpGt
Installs: 7 513
Dependents: 4
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 2
Open Issues: 9
Requires
- php: >=8.0
- magicalex/write-ini-file: v1.2.4
- phpgt/typesafegetter: 1.*
Requires (Dev)
- phpstan/phpstan: >=0.12.64
- phpunit/phpunit: 9.*
- dev-master
- v1.1.0
- v1.0.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.0
- v0.0.1
- dev-dependabot/composer/phpstan/phpstan-1.10.6
- dev-dependabot/composer/phpunit/phpunit-9.6.5
- dev-dependabot/composer/magicalex/write-ini-file-2.0.1
- dev-dependabot/composer/phpstan/phpstan-0.12.85
- dev-circleci
- dev-18-writer
- dev-16-overrides
This package is auto-updated.
Last update: 2024-11-29 15:58:12 UTC
README
Manage your project configuration by defining defaults, that can be overridden by ini files and environment variables.
Also provides functionality for generating ini files from the CLI.
Documentation: https://php.gt/docs/config
Example usage - loading project configuration:
A project's configuration can be split across multiple files. The following example shows how a secret can be supplied through the environment, which is used to override the default value defined within config.ini, and also shows how other named config files can be used.
nginx.conf:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_param database_password super-secret-passw0rd;
include fastcgi_params;
}
config.ini:
[app] namespace = MyApp debug = true logging = verbose [database] host = db.example.com schema = local_shop username = admin password = admin_pass [shopapi] key = jungfnyyguvffubhgvat secret = guvfvfnybpnyfubcgurerfabguvatsbelbhurer
config.dev.ini:
[database] host = localhost
example.php:
// Load config.ini $config = new Config("/path/to/project"); // Note that the database password is overriden in the environment (from nginx) // and the host is overridden by the development ini file. echo $config->get("database.host"); // localhost echo $config->get("database.port"); // 6612 echo $config->get("database.password"); // super-secret-passw0rd
Example usage - generating configuration files:
Sometimes it's useful to generate config files on-the-fly, such as from Continuous Integration scripts. Below shows a quick example of how to generate a config.deploy.ini
file with a few key-values that will override the default.
vendor/bin/config-generate deploy "shopapi.key=test-api-key" "database.schema=local_shop_$BRANCH_NAME"
The above command will create a config.deploy.ini
file (note the first argument of "deploy") and provide overrides for two ini keys using dot notation. Note that because this command will be run within a continuous integration setting, we are expecting there to be a $BRANCH_NAME variable set for us, allowing us to use a schema name containing the current branch.