单例模式
实例
<?php /** * 单例模式:一个类只允许实例化一次 */ class Demo { // 保存当前类的实例 private static $instance; // 配置参数容器 public $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 '<span style="color:red">非法参数</span>'; } } else { echo '<span style="color:red">没有参数</span>'; } } // 获取参数: 当无参数的时候,默认获取全部参数 public function get($name='') { if (empty($name)) { //获取所有参数 return $this->setting; } // 获取某一个参数 return $this->setting[$name]; } } $obj=Demo::getInstance(); $obj->set('host','127.0.0.1'); echo $obj->get('host'),'<br>'; $config = ['host'=>'127.0.0.1','user'=>'root','pwd'=>'root']; $obj->set($config); print_r($obj->get());
运行实例 »
点击 "运行实例" 按钮查看在线实例
mvc
实例
<?php /** * 入口文件 */ require './controller/controller.php'; use mvc\controller\Controller; $controller = new Controller; $controller->index();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 控制器 */ namespace mvc\Controller; use mvc\model\Model; use mvc\view\View; require './model/model.php'; require './view/view.php'; class Controller { public function index() { // 获取数据库数据 $model=new Model('test','root',''); $model->select('user',15); $result=$model->result; // 模板赋值 $view = new View($result); $data = $view->getData(); $view->display($data); } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 模型:负责操作数据库 */ namespace mvc\Model; class Model { private $pdo; public $result; // 连接数据库 public function __construct($dbname,$user,$pwd) { $this->pdo=new \PDO('mysql:host=127.0.0.1;dbname='.$dbname,$user,$pwd); } // 查询 public function select($table,$num) { // 创建预处理对象 $stmt=$this->pdo->prepare("SELECT `id`,`name`,`age`,`salary` FROM {$table} LIMIT :num"); // 创建预处理 $stmt->bindValue(':num', $num, \PDO::PARAM_INT); // 执行查询 $stmt->execute(); $this->result=$stmt->fetchAll(\PDO::FETCH_ASSOC); } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php /** * 视图类 */ 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"> <style> table,th,td { border: 1px solid black; } table { border-collapse: collapse; /*折叠表格线*/ width: 600px; margin: 30px auto; text-align: center; padding: 5px; } table tr:first-child { background-color: lightgreen; } table caption { font-size: 1.5em; margin-bottom: 15px; } </style> <title>MVC简介</title> </head> <body> <table> <caption>员工信息表</caption> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>工资</th> </tr>'; foreach ($data as $test) { $table .= '<tr>'; $table .= '<td>'.$test['id'].'</td>'; $table .= '<td>'.$test['name'].'</td>'; $table .= '<td>'.$test['age'].'</td>'; $table .= '<td>'.$test['salary'].'</td>'; $table .= '</tr>'; } $table .= '</table></body></html>'; echo $table; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
mvc的设计思想:将项目分成Model 模型、View 视图、Controller 控制器三个模块,模型层负责数据的操作,视图层负责将数据显示到界面上,控制器负责交互