一.单例模式:
实例
<?php /** * 单例模式:一个类仅仅允许被实例化一次 * 1.一个站点仅仅需要创建一个数据库连接 * 2.一个站点通常只需要一个配置类 */ class Config1{} //实例化 $obj1=new Config1(); $obj2=new Config1(); var_dump($obj1,$obj2); var_dump($obj1 === $obj2); echo 'hr'; //创建一个使用的配置类:单例模式 class Config{ /** * 用静态是因为静态属性属于类的,被所有实例所共享; * 实例初始化为null是因为便于检测 */ private static $instance=null;//默认值就是null,可以省略; //配置参数容器 private $setting=[]; //禁止从类的外部实例化对象,所以要把构造方法私有 private function __construct() { } //也不允许克隆,所以把克隆也私有 private function __clone() { // TODO: Implement __clone() method. } //外部仅仅允许通过一个公共静态方法来创建实例 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); if(is_array($value)){ $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]; } } $obj3=Config::getInstance(); $obj4=Config::getInstance(); var_dump($obj3,$obj4); var_dump($obj3===$obj4); $obj3->set('商品类型','手机'); echo $obj3->get('商品类型'); $obj3->set(['商品类型'=>'电脑','商品价格'=>8000,'商品***'=>'戴尔','售后评价'=>'优']); echo '<hr>'; echo '<pre>',print_r($obj3->get(),true);
运行实例 »
点击 "运行实例" 按钮查看在线实例
二.MVC模式:
controller.php
实例
<?php /** * Created by PhpStorm. * User: 714326675 * Date: 2018/9/12 * Time: 18:12 */ namespace mvc\controller; use mvc\model\Model; use mvc\view\View; class Controller { public function index(){ //测试模型 require './model/Model.php'; $model=new Model('test','root',''); $model->select('user',5); $result=$model->result; //print_r($result); //引用view.php require './view/view.php'; //导入model.php查询出来的数据 $view=new View($result); //把$this->data的内容赋值给$data $data=$view->getData(); //显示内容 $view->display($data); } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
model.php
实例
<?php /** * Created by PhpStorm. * User: 714326675 * Date: 2018/9/12 * Time: 17:51 */ namespace mvc\model; class Model { public $pdo=null; //连接数据库 public $result=[]; public function __construct($dbname,$user,$pass) { $this->pdo=new \PDO('mysql:host=127.0.0.1;dbname='.$dbname,$user,$pass); } //查询 public function select($table,$num){ //创建预处理对象 $stmt=$this->pdo->prepare("SELECT `id`,`name`,`salary`,`email` FROM {$table} LIMIT :num;"); $stmt->bindValue(':num',$num,\PDO::PARAM_INT); $stmt->execute(); $this->result=$stmt->fetchAll(\PDO::FETCH_ASSOC); } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
view.php
实例
<?php /** * Created by PhpStorm. * User: 714326675 * Date: 2018/9/12 * Time: 17:39 */ namespace mvc\view; class View { public $data=[]; //模版赋值 public function __construct($data) { $this->data=$data; } //获取数据 public function getData(){ return $this->data; } public function display($data){ $table='<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>用户表</title> <style> table{ width: 60%; text-align:center; border-collapse: collapse; margin:30px auto; } table,th,td{ border:1px solid black; } table tr:first-child{ background-color:#22c9f1; } table caption{ font-size:1.5em; margin-bottom:15px; } td{ padding:8px; } </style> </head> <body> <table> <caption>用户表</caption> <tr> <th>ID</th> <th>用户名</th> <th>工资</th> <th>邮箱</th> </tr>'; foreach($data as $staff){ $table.='<tr>'; $table.='<td>'.$staff['id'].'</td>'; $table.='<td>'.$staff['name'].'</td>'; $table.='<td>'.$staff['salary'].'</td>'; $table.='<td>'.$staff['email'].'</td>'; $table.='</tr>'; } $table.='</table></body></html>'; echo $table; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
index.php
实例
<?php /** * * 框架入口文件 * 首页 * */ require './controller/Controller.php'; use mvc\controller\Controller; $ctrl=new Controller(); $ctrl->index();
运行实例 »
点击 "运行实例" 按钮查看在线实例
三.MVC设计思想:
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
作者:NickName_Lower
链接:https://www.jianshu.com/p/642830030437
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。