博客列表 >9.7mvc

9.7mvc

归宿的博客
归宿的博客原创
2018年09月17日 12:00:51670浏览

1.单例模式;

class Conf1
{

}

$conf1 = new Conf1();
$conf2 = new Conf1();


//创建一个实用的配置类:单例模式
class Config
{
    /*
     *为什么要用静态的: 因为静态属性属于类的,被所有类实例所共享;
     * 为什么要给初始值为null? 便于检测
     */
    private static $instance = null;  //其实默认值就是null

    //配置参数容器
    public $setting = [];

    //禁止从类的外部实例化对象
    private function __construct()
    {
    }
    //外部仅允许通过一个公共静态方法来创建实例
    public static function getInstance()
    {
        //检测当前的类属性$instance是否已经保存了当前类的实例?
        if(self::$instance ==null){
            self::$instance = new self;
        }
        return  self::$instance;
    }

    //配置项的设置操作
    public function set()
    {
        //获取参数的数量
        $num = func_num_args();
        if($num > 0){
            switch($num){
                case 1: //如果只有一个参数,说明这是一个数组
                    $value = func_get_arg(0);
                    $this->setting = array_merge($this->setting,$value);
                    break;
                case 2: //如果只有一个参数,说明这是一个数组
                    $name = func_get_arg(0);
                    $value = func_get_arg(1);
                    $this->setting[$name] = $value;
                    break;
                default:
                    echo '参数不正确';
            }
        }else{
            echo '没有参数';
        }
    }


    //获取参数:当无参数的时候,默认获取全部参数
    public function get($name='')
    {
        if(empty($name)){
            //获取所有参数
            return $this->setting;
        }
        //获取某一个参数
        return $this->setting[$name];
    }
}
$obj1 = Config::getInstance();
$obj2 = Config::getInstance();
var_dump($obj1,$obj2);
var_dump($obj1 === $obj2);
echo '<hr>';

//设置
$obj1->set('host','127.0.0.1');
echo $obj1->get('host');
echo '<hr>';
$config = ['host'=>'127.0.0.1','user'=>'root','pass'=>'1234556'];
$obj1->set($config);
var_dump($obj1->get());

2.mvc的实现原理;

//先声明三个类,一会然他们上树
class Demo1{};
class Demo2{};
class Demo3{};

//声明一个对象注册树
class Register
{
    public static $objs = [];

    //将对象挂到树上
    public static function set($index,$obj)
    {
        self::$objs[$index] = $obj;
    }

    //取出对象来用一下
    public static function get($index)
    {
        return self::$objs[$index];
    }

    //销魂对象
    public static function del($index)
    {
        unset(self::$objs[$index]);
    }
}


//将三个类的对象上树
Register::set('demo1',new Demo1);
Register::set('demo2',new Demo2);
Register::set('demo3',new Demo3);
//检测
//var_dump(Register::$objs);
//查看
//var_dump(Register::$objs['demo2']);
//Register::del('demo3');  //销毁
var_dump(Register::get('demo3'));

3.mvc的设计思想;

model模块;view视图;controller控制器.
model将用户请求的操作,反馈给控制器,控制器操作完用户的需求返回给model,model将转换为视图,显示给用户


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议