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将转换为视图,显示给用户