A.5. 全局配置文件

A.5.1. 配置文件设置

现在,如果你的配置文件中已经有一个名为‘Solar_Example’的配置组了,那么这个组的配置值会覆盖类定义中的默认参数。假设你的配置文件如下:

<?php
$config = array();
// ...
$config['Solar_Example']['opt_3'] = 'dib';
// ...
return $config;

当你实例化Solar_Example对象的时候,配置文件中的参数会覆盖类中对应的默认值,其它参数不受影响:

<?php
$example = Solar::factory('Solar_Example');
/**
 * 
 * The values of $example->_config are now:
 * 
 * 'opt_1' => 'foo'
 * 'opt_2' => 'bar'
 * 'opt_3' => 'dib' // from the config file
 */

A.5.2. 实例配置

最后,如果你给Solar::factory()的第二个参数指定了一个配置数组,那么该数组的值会覆盖类定义的默认值和配置文件Solar.config.php中的值。

<?php
$config = array('opt_2' => 'gir');
$example = Solar::factory('Solar_Example', $config);
/**
 * The values of $example->_config are now:
 * 
 * 'opt_1' => 'foo' // as defined by the class
 * 'opt_2' => 'gir' // from the Solar::factory() instantiation config
 * 'opt_3' => 'dib' // from the config file
 */

A.5.3. 优先顺序

本章讲的就是配置的优先顺序,概括如下:

  • 类定义的配置参数优先级最低。

  • 配置文件中的参数可以可以覆盖类定义中的参数。

  • 实例化时的配置参数优先级最高,可以覆盖前面两种。

注意,没改变的参数会保留原值,所以如果你没有配置某一项,它也不会是空值。