How to Configure Your Application
Windwalker stores config files in /etc
folder, you can see config.yml
and secret.yml
file. These two config files will be merged
in runtime, so settings in secret.yml can override the same key in config.yml.
config.yml
The config.yml
stores some global system settings includes the language locale, session time, cache storage, timezone etc.
Which is your application need and will be track by VCS, .
secret.yml
And the secret.yml
stores some customize or sensitive settings which you don't want to track by VCS, for example, the database account
or the 3rd party service API key, you will not hope to push these information to GitHub or other public VCS service, so we will
write some keys in secret.dist.yml
.
For example, we can prepare some empty keys in secret.dist.yml
then push this file to VCS.
## secret.dist.yml
## Keep NULL to notice developers fill this data.
amazon:
key: ~
secret: ~
When Someone clone this project, they must copy secret.dist.yml
to secret.yml
and fill the keys.
## secret.yml
## Fill real data to use.
amazon:
key: ************
secret: *************************
Override config.yml
If you set a config in config.yml
## config.yml
foo: bar
You can override it in secret.yml
## secret.yml
foo: yoo
Now the foo
value will be yoo
not bar
.
Get & Set Config Data
In Application, you can use get()
to get config.
// Use Ioc get Application then get config
$value = Ioc::getApplication()->get('foo', [default value]);
// Get config in controller
$value = $this->app->get('foo', [default value]);
// Set data
$this->app->set('foo', 'baz');
Get config by Config object.
// In everywhere
$config = Ioc::getConfig();
$foo = $config->get('foo');
// You can also get data by array access.
$foo = $config['foo'];
Config is a Registry object, please see Registry Object
Nested Data
If you have multi-level config:
morning:
break:
first: egg
Please use dot (.
) as separator:
$config->get('morning.break.first'); // sakura
// OR
$config['morning.break.first']; // sakura
Add New Config Files
Open src/Windwalker/Web/Application.php
and modify loadConfiguration()
, you can load any files as config if you want.
protected function loadConfiguration(Registry $config)
{
Windwalker::loadConfiguration($config);
$config->loadFile(WINDWALKER_ETC . '/my-config.yml', 'yaml');
// Or load other formats
$config->loadFile(WINDWALKER_ETC . '/my-config.ini', 'ini');
$config->loadFile(WINDWALKER_ETC . '/my-config.xml', 'xml');
$config->loadFile(WINDWALKER_ETC . '/my-config.php', 'php'); // Must return array
}
Package Config
Every packages has their own configs. If you have a FlowerPackage
and it's alias is flower
, create a file to etc/package/flower.yaml
.
Package object will auto load this config file.
You can get package config from package object:
$package = PackageHelper::getPackage('flower');
$package->get('foo');
Description of Config
The config.yml looks like above:
system:
debug: 0
error_reporting: 0
timezone: 'UTC'
secret: 'This-token-is-not-safe'
session:
handler: native
expire_time: 15
routing:
debug: 0
cache:
enabled: 0
storage: file
handler: serialize
dir: cache
time: 15
language:
debug: 0
locale: en-GB
default: en-GB
format: ini
path: resources/languages
Key | Sub Key | Value |
---|---|---|
system |
||
debug |
Enable debug mode or not | |
error_reporting |
PHP error_reporting setting, set -1 to enable strict mode, set 0 to close all error messages. | |
timezone |
The default system timezone. | |
secret |
A random string as secret code to generate some tokens | |
session |
||
handler |
The session handler, native is the native php session handler, you can use database or memcache , please see Windwalker Session |
|
expire_time |
Session expire time, the unit is minute. | |
routing |
||
debug |
Enable routing debug, see Routing | |
cache |
||
enabled |
Enable system cache. | |
storage |
Cache storage, FileStorage is the default. See Caching | |
handler |
Hot cache convert array and object to string. | |
dir |
Cache storage folder. | |
time |
Cache TTL time (minute). | |
language |
||
debug |
Enable Language debug. | |
locale |
The current locale. | |
default |
The default locale. | |
format |
The language translate file format. See Windwalker Language | |
path |
The language file path. |
If you found a typo or error, please help us improve this document.