sfConfig类 The sfConfig Class
你可以在程序代码里通过sfConfig类访问配置信息。它是一个配置信息的登记处,它有一些简单的存取方法,这些存取方法可以在程序的任何地方使用。
[php]
// 取得一个设定
parameter = sfConfig::get('param_name', $default_value);
注意你也可以在PHP代码里定义或者覆盖一个设置:
[php]
// 定义一个设定
sfConfig::set('param_name', $value);
参数的名字由几部分组成,中间用下划线分割,顺序如下:
与配置文件名有关的前缀 (sf_ 代表 settings.yml, app_ 代表 app.yml, mod_ 代表 module.yml, sf_i18n_ 代表 i18n.yml, sf_logging_ 代表 logging.yml)
父键名 (如果有), 小写形式
键名, 小写形式
参数名字不包括环境名称,因为PHP代码只能访问到执行时所在的环境里定义的参数。
例如,如果你需要访问app.yml里定义的值,见例5-15,你需要例5-16中的代码。
例 5-15 - app.yml 配置文件样本
all:
version: 1.5
.general:
tax: 19.6
default_user:
name: John Doe
mail:
webmaster: webmaster@example.com
contact: contact@example.com
dev:
mail:
webmaster: dummy@example.com
contact: dummy@example.com
例 5-16 - 在dev环境从PHP代码里访问配置信息
[php]
echo sfConfig::get('app_version');
=> '1.5'
echo sfConfig::get('app_tax'); // 请注意分类的头会被忽略掉
=> '19.6'
echo sfConfig::get('app_default_user_name);
=> 'John Doe'
echo sfConfig::get('app_mail_webmaster');
=> 'dummy@example.com'
echo sfConfig::get('app_mail_contact');
=> 'dummy@example.com'
所以symfony的配置信息有所有PHP常量的优点,但是没有PHP常量的缺点,因为symfony配置的值可以改变。
所以, 用来给应用程序设定框架设置的settings.yml文件,相当于一系列的sfConfig::set()调用。例 5-17 会被解释为 例 5-18。
例 5-17 - 不完整的settings.yml
all:
.settings:
available: on
path_info_array: SERVER
path_info_key: PATH_INFO
url_format: PATH
例 5-18 - symfony处理settings.yml文件的结果
[php]
sfConfig::add(array(
'sf_available' => true,
'sf_path_info_array' => 'SERVER',
'sf_path_info_key' => 'PATH_INFO',
'sf_url_format' => 'PATH',
));
settings.yml文件里面设置的含义请参考第19章。