设置管理
文章分页:
设置管理 - 1

myConfig.class.php 用于读取、设置、管理多种格式(php, ini, json)的设置内容。

建立实例
$config = new myConfig($file);

以上代码将根据$file的扩展名建立对应实例,如文件存在则读取相关设置信息。

 

调用设置

设置内容可为多级,通过对象属性的方式进行调用,如设置文件为:

{  
  "gen": {  
    "language": "default",  
    "charset": "utf-8",  
    "timezone": "Etc\/GMT-8"  
  },  
  "web": {  
    "title": "MyStep Framework",  
    "keyword": "mystep,framework,free",  
    "description": "PHP 框架"  
  }  
}

如需调用web项下的keyword设置,可通过以下代码实现:$config->web->keyword

 

变更设置

如变更某一个设置信息,只需直接通过调用设置的方式赋值即可,如:

$config->web->keyword = 'My Keyword';

以上方法不用担心每个节点是否存在,本类可以智能进行处理。

如需批量赋值,可通过以set方法,代码如下:

$config->set($_POST);

以上代码将会直接将表单提交的数据向设置实例赋值。

此外,本类还提供 merge 方法用于将新的设置信息覆盖现有设置内容,代码如下:

$config->merger($new_setting);

其中 $new_setting 可以为数组、对象或设置文件路径。

 

设置保存

做完更改操作后,还需要通过save方法对已有的设置进行保存,代码如下:

$config->save($type);

其中$type变量可为 php, ini 或 json 中的一种,如为空或其他内容,则根据实例化时 $file 所包含的扩展名进行存储,所保存的文件也根据 $file 确定,如不存在将会建立新的文件。

 

设置页面

本类还可根据配置脚本生成设置页面,示例如下:

<?PHP  
return array(  
    'name' => '设置示例',  
    'list' => [  
        'para_1' => array(  
            'name' => '文本测试',  
            'describe' => '不可为特殊符号,限长50字',  
            'type' => array('text', 'name', '50')  
        ),  
        'para_2' => array(  
            'name' => '数字测试',  
            'describe' => '只可为合法实数,限长10位',  
            'type' => array('text', 'number', '10')  
        ),  
        'para_3' => array(  
            'name' => '复选测试',  
            'describe' => '可多选',  
            'type' => array('checkbox', array('选项 1'=>1, '选项 2'=>2, '选项 3'=>3, '选项 4'=>4))  
        ),  
        'para_4' => array(  
            'name' => '单选测试',  
            'describe' => '单选',  
            'type' => array('radio', array('开启'=>'true', '关闭'=>'false'))  
        ),  
        'para_5' => array(  
            'name' => '选单测试',  
            'describe' => '下拉列表',  
            'type' => array('select', array('选项 1'=>'select_1', '选项 2'=>'select_2', '选项 3'=>'select_3', '选项 4'=>'select_4'))  
        ),  
        'para_6' => array(  
            'name' => '密码测试',  
            'name2' => '重新输入',  
            'describe' => '请输入两次密码,限长15位',  
            'type' => array('password', 'md5', '15')  
        ),  
        'para_7' => array(  
            'name' => '开关测试',  
            'describe' => '相当于只有一个项目的复选框',  
            'type' => array('switch', 'y', '是否开启')  
        ),  
        'para_8' => array(  
            'name' => '多行文本',  
            'describe' => '用于输入多行长文本内容',  
            'type' => array('textarea', '', 5)  
        ),  
    ]  
);  
 

其对应的设置内容为:

<?PHP  
$setting = array();  
$setting['para_1'] = 'test1';  
$setting['para_2'] = 123456.78;  
$setting['para_3'] = '2,3';  
$setting['para_4'] = true;  
$setting['para_5'] = 'select_2';  
$setting['para_6'] = 123456;  
$setting['para_7'] = '';  
$setting['para_8'] = '111  
222  
333';  
return $setting;

以上设置为一维,方法还可以支持二维设置,具体模式可以参见config/construction目录下的具体代码。

设置信息中 type 参数的规则如下:

1   text   单行文本,第二个参数指定了约束类型,包括:email, url, digital, number, alpha, word, name, date, time, tel 等,如为空则表示必须填写,如为可选项则直接在对应的项目后面加上一个“_”,如“email_”表示非必填,但是如填写则必须是email格式,而“_”表示可以填写任意内容,本项目也可以直接填写正则表达式来约束文本内容;第三个参数表示字符串的长度限制,单独数字表示不得超过这个长度,区间数(如“5-8”)表示长度必须在这个字数区间内,数字加叹号(如:“10!”)表示必须等于对应数额的字符长度。  
2   checkbox   复选框,第二个参数为数组,键名对应显示名称,键值对应实际值  
3   radio   单选框,参数与checkbox相同  
4   switch   开关项,相当于只有一个项目的复选框  
5   select   选择项,参数与checkbox相同  
6   textarea   多行文本,用于输入多行长文本内容  
7   password   密码项, 第二个参数指定加密函数,可为空;第三个参数表示字符串的长度限制,可以为最大值的数字或者字数区间,如“5-8”。  

 

自定义格式

除默认的 php, ini, json 三种格式外,还可以通过 setParser 方法自定义配置格式。

setParser 方法包含三个参数,分别是:

  • 扩展名(字符串)
  • 配置解析函数(字符串、数组等任意有效的可调用名称)
  • 配置生成函数(字符串、数组等任意有效的可调用名称)

 

上一篇:抽象类
下一篇:预定义变量