controller.php 代码
实例
<?php namespace mvc; require_once 'Model.php'; require_once 'View.php'; // 控制器 class Controller{ public $table = null; //查询数据 public function index($sql,View $view){ //获取数据 $data = Db::read($sql); // print_r($data); //渲染模板 // $view = new View(); return $view->fetch($data); } //新增数据 public function add($sql,$data=[]){ Db::create($sql,$data); } //更新数据 public function update($sql,$data){ Db::update($sql,$data); } // 删除数据 public function delete($sql){ Db::delete($sql); } } //客户端调用 $connectParams = [$dsn, $user, $password]; $pdo = Db::getInstance(...$connectParams); //查询数据 $sql = 'SELECT * FROM `category` WHERE `cate_id` = 1'; $view = new View(); $controller = new Controller(); $controller->index($sql,$view); // 新增数据 //$data = [ // 'name'=>'kh', // 'alias'=>'科幻电影' //]; ////$model = 'category'; //$sql= 'INSERT INTO category (name,alias) VALUES (:name,:alias)'; //$controller = new Controller(); //$controller->add($sql,$data); //更新数据 //$data = [ // 'name'=>'kj', // 'alias'=>'抗金英雄郭靖', //]; //$sql = 'UPDATE category SET alias = :alias, name = :name WHERE cate_id = 12'; //$controller = new Controller(); //$controller->update($sql,$data); //// 删除数据 //$sql = 'DELETE FROM `category` WHERE `cate_id`=12'; //$controller = new Controller(); //$controller ->delete($sql); ////echo '成功更新了: ' .$db->delete($where). ' 条记录';
运行实例 »
点击 "运行实例" 按钮查看在线实例
Db.php
实例
<?php namespace mvc; require_once 'config.php'; require_once 'View.php'; class Db{ private static $pdo = null; public static function getInstance(...$connectParams){ if (is_null(self::$pdo)) { // 因为构造函数没有返回值, 所以实例当前类并赋值给静态属性的过程,只能在构造方法中完成 // self::$pdo = new self(...$connectParams); new self(...$connectParams); } return self::$pdo; } // 当前构造方法是私有的, 仅表示在类外部不允许调用, 但是在类的内部仍然有效的 private function __construct(...$connectParams){ // 当前$connectParams 是一个索引数组,每一个元素对应着不同的连接参数 $dsn = $connectParams[0]; $username = $connectParams[1]; $password = $connectParams[2]; // 在私有的构造方法中完成类实例的创建过程 // 创建一个PDO类实例, 并赋值给当前类实例self::$pdo self::$pdo = new \PDO($dsn, $username, $password); } // 私有化克隆方法 private function __clone(){ } // 读取多条数据 public function read($sql){ $stmt = static::$pdo->prepare($sql); $stmt->execute(); // 返回二维数组表示的查询结果集 return $stmt->fetchAll(\PDO::FETCH_ASSOC); } // 新增, 参数是数组: 新记录的键值对 public function create($sql,$data){ $stmt = static::$pdo->prepare($sql); $stmt->execute($data); echo '成功新增'.$stmt->rowCount().'条记录,最新记录的主键ID是: '.static::$pdo->lastInsertId(); } //更新数据 public function update($sql,$data){ $stmt = static::$pdo->prepare($sql); $stmt->execute($data); // 返回被更新的记录数量 // return $stmt->rowCount(); echo '成功更新了: ' .$stmt->rowCount() . ' 条记录'; } // 删除数据 public function delete($sql){ // 预处理执行删除操作 $stmt = static::$pdo->prepare($sql); $stmt->execute(); // return $stmt->rowCount(); echo '成功删除了: ' .$stmt->rowCount(). ' 条记录'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
model.php 这个是引入的db类 但是好像不能继承
View.php
实例
<?php namespace mvc; require_once 'Model.php'; class View{ public function fetch($data){ // print_r($data); // foreach ($data as $v){ // echo "<li> {$v['cate_id']} {$v['name']} {$v['alias']} </li>"; // } require_once 'index.php'; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
index.php
实例
<?php ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> </style> </head> <body> <ul> <?php foreach ($data as $v){ echo "<li><a href=''>{$v['cate_id']} {$v['name']} {$v['alias']} </a></li>"; } ?> </ul> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
config.php 这个是配置文件
实例
$db = [ 'type' => 'mysql', 'host' => 'localhost', 'dbname' => 'cms', 'username' => 'root', 'password' => 'root', ]; //// 配置数据源DSN信息 $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}"; $user = $db['username']; $password = $db['password'];
运行实例 »
点击 "运行实例" 按钮查看在线实例