php 配置类,系统配置类 · PHP搭建MVC框架详细教程 · 看云

#### 系统配置类

在整个网站的运行过程中,经常需要用到系统配置文件,比如说数据库配置,需要经常进行读取,所以,写一个系统配置类是必要的,在这个配置类中,我们可以动态操作配置文件,设计的时候,模仿TP的C函数,首先在公共函数中定义一个C函数,

``function C(){

$conf = \S\Config::getInstance(); //获取配置类的单例

$args = func_get_args(); //获取函数中传进来的参数

switch (func_num_args()) { //获取传进来的参数的个数

case 0: //0个参数,读取全部配置

return $conf->get(); //返回config对象的get方法结果

break;

case 1: //一个参数,则为读取配置信息的值,如果是数组,为动态设置配置信息的值

if (is_array($args[0])){

return $conf->setAll($args[0]); //返回config对象的setAll方法结果

}

return $conf->get($args[0]); //如果不是数组,就是获取该配置信息的值

break;

case 2: //两个参数,为设置配置信息的值

return $conf->set($args[0],$args[1]);

break;

default:

break;

}

}``

首先获取配置类的单例,然后根据传入参数的个数,调用不同这个类中不同的方法,是获取还是设置信息。

###### 在配置类中实现方法:

~~~

~~~``<?php

namespace S;

class Config{

//这个数组是用来存放配置值的

private $config=[];

//这个变量用来存放单例的

private static $instance;

public static function getInstance(){ //单例模式

if (!(self::$instance instanceof self)) { //判断现在的$instance是否是自身类的一个实例

self::$instance = new self; //如果不是的话,证明这个类从来没有实例化过,那么就实例化自己

}

return self::$instance; //如果是的话,就返回这个$instance,这个类的实例,这样就能保证在整个程序运行过程中都只有一个Config类的实例,可以节约资源,这就是单例模式

}

/**

* Config constructor. 构造函数 创建实例时就引入配置文件,并合并,给$config赋值

*/

private function __construct(){ //在实例化这个类的时候 就会调用这个构造函数

$sys_conf = []; //系统配置数组

$user_conf = []; //用户配置数组

//系统配置文件

if (file_exists(SYS_CONFIG)){ //如果S-Framework中定义过的系统配置文件路径存在且有效的话,则把这个文件包含进来

$sys_conf = include(SYS_CONFIG);

}

//用户配置文件

if (file_exists(USER_CONFIG)){ //如果S-Framework中定义过的用户配置文件路径存在且有效的话,则把这个文件包含进来

$user_conf = include(USER_CONFIG);

}

return $this->config = array_merge($sys_conf,$user_conf); //把用户配置和系统配置合并在同一个数组里,使用户配置覆盖掉相同的系统配置,这样就实现了用户的自定义配置

}

/**

* @return array 获取config文件中的数据

*/

public function get($parm = null){

$value = [];

if (isset($this->config) && empty($parm)){ //如果没有参数传进来的话,就返回整个config数组(config数组在构造函数中获得过值)

return $this->config;

}

if (isset($this->config[$parm])){ //如果有参数传进来的话,就在config数组中寻找键值是这个参数的配置项,并将其返回

return $this->config[$parm];

}else{

echo 'config参数错误';

}

}

public function setAll($arr){ //批量设置配置项

if (is_array($arr)){ //如果传进来的参数是一个数组的话

foreach ($arr as $key => $value) { //就遍历这个数组,每遍历一个键值对,就调用一次set方法,把键与值作为参数传递进去

$this->set($key,$value); //使得每一个键值对都成为一个配置项,然后返回true,证明执行成功

}

return true;

}else{

return false; //如果传进来的参数不是数组,就返回false,证明执行失败

}

}

public function set($keys,$values){ //设置配置数组的值

$this->config[$keys] = $values; //使传进来的两个参数的键与值对应

return true;

}

} ``

以上就是系统配置类,现在我们重新看开始的C()函数,首先获取Config类的对象,然后根据需要调用不同的方法,达到设置与获取配置项的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值