文章分页:
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 方法包含三个参数,分别是:
- 扩展名(字符串)
- 配置解析函数(字符串、数组等任意有效的可调用名称)
- 配置生成函数(字符串、数组等任意有效的可调用名称)