博客列表 >自己搞了一个mvc模式 不晓得对不对哈

自己搞了一个mvc模式 不晓得对不对哈

世纪天城
世纪天城原创
2019年12月10日 15:41:501295浏览

 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类  但是好像不能继承

实例

namespace mvc;
include_once 'Db.php';
class Model{

}

运行实例 »

点击 "运行实例" 按钮查看在线实例


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'];

运行实例 »

点击 "运行实例" 按钮查看在线实例


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