博客列表 >Day40-2018/1/15(写一个类似的案例,试一下用命名空间实现,并进行类的自动加载。)

Day40-2018/1/15(写一个类似的案例,试一下用命名空间实现,并进行类的自动加载。)

SmallKing的博客
SmallKing的博客原创
2018年01月17日 18:52:50852浏览

写一个连接类似的案例,试一下用命名空间实现,并进行类的自动加载。

数据库名为:demo

表格名为:user1

Db.php Db类

<?php
namespace model;
//创建单例模式数据库访问类
class Db
{
    //数据库配置信息
    private $dbConfig = [
        'name' => 'demo', //数据库名称
        'dbType' => 'mysql',//数据库类型
        'host' => 'localhost',//数据库地址
        'userName' => 'root',//数据库用户名
        'password' => 'root',//数据库密码
        'charset' => 'utf8'//字符集
    ];
    public $insertId = null;//记录新增最后一条ID
    public $num = 0;//用于记录影响数据行数
    private $pdo = null;//pdo对象
    private static $instance = null; //唯一实例

    //实例化Db类
    public static function getInstance($param = [])
    {
        if (!self::$instance instanceof self) {
            self::$instance = new self($param);
        }
        return self::$instance;
    }

    //使用用户自定义参数,替换默认参数,连接数据库
    private function __construct($param = [])
    {
        $this->dbConfig = array_merge($this->dbConfig, $param);
        $this->connect();
    }
//私有化克隆
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

//    数据库的连接
    private function connect()
    {
        try {
            $dsn = $this->dbConfig['dbType'] .
                ':host=' . $this->dbConfig['host'] .
                ';dbname=' . $this->dbConfig['name'] .
                ';charset=' . $this->dbConfig['charset'];
            $this->pdo = new \PDO($dsn, $this->dbConfig['userName'], $this->dbConfig['password']);

        } catch (DOMException $e) {
            echo $e->getMessage();
            exit();
        }
    }
    //数据库操作增删改
    public function exec($sql)
    {
        $num = $this->pdo->exec($sql);
        if ($num > 0) {
            if ($this->pdo->lastInsertId() !== null) {
                $this->insertId = $this->pdo->lastInsertId();
            }
            $this->num = $num;
        } else {
            print_r($this->pdo->errorInfo());
        }
    }
    //查询一条语句
    public function getOne($sql){
        $pdoStmt=$this->pdo->query($sql);
        if (isset($pdoStmt)&&$pdoStmt->rowCount()==1) {
            return $pdoStmt->fetch(\PDO::FETCH_ASSOC);
        }else {
            return( $pdoStmt->errorInfo());
        }
    }
    //查询全部
    public function getAll($sql){
        $pdoStmt=$this->pdo->query($sql);
        if (isset($pdoStmt)&&$pdoStmt->rowCount()>0) {
            return $pdoStmt->fetchAll(\PDO::FETCH_ASSOC);
        }else {
            print_r( $pdoStmt->errorInfo());
        }
    }
}

Model.php  Model 类

<?php
namespace model;
class Model
{
protected $db=null;
public $data=0;
public function __construct()
{
    $this->init();
}
public function init(){
    $dbConfig=[
        'usernanme'=>'root',
        'password'=>'root',
        'dbname'=>'demo'
        ];
    $this->db=Db::getInstance($dbConfig);
}
public function getOne($id=1){
    $sql="SELECT * FROM user1 WHERE id={$id}";
    $this->data=$this->db->getOne($sql);
    return $this->data;
}
    public function getAll(){
        $sql="SELECT * FROM user1 ";
        $this->data=$this->db->getAll($sql);
        return $this->data;
    }
}

ModelStudent.php  ModelStudent 类

<?php
namespace model;
class ModelStudent extends Model
{

}

UserController.php

<?php
include "../loader.php";//自动加载类
class UserController
{
    public function getAll(){
        $stu=new \model\ModelStudent();
        $data=$stu->getAll();
//        print_r($data);
        include '../view/getAll.php';
    }
    public function getOne($id){
        $stu=new \model\ModelStudent();
        $data=$stu->getOne($id);
//        print_r($data);
        include '../view/getOne.php';
    }
}
(new UserController)->getAll();

Loader.php

<?php
function my_autoloader($class) {
    include $class . '.php';
}

spl_autoload_register('my_autoloader');
//$test=new \model\Test();//测试

getAll.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <title>Title</title>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-sm-12">
            <table class="table table-bordered table-hover">
                <h2 class="text-center">用户信息表</h2>
                <tr>
                    <th>ID</th>
                    <th>名字</th>
                    <th>邮箱</th>
                    <th>密码</th>
                </tr>
                <?php foreach ($data as $row):?>
 <tr>
                        <td><?php echo $row['id']?></td>
                        <td><?php echo $row['name']?></td>
                        <td><?php echo $row['email']?></td>
                        <td><?php echo sha1($row['password'])?></td>
                    </tr>
                <?php endforeach ?>
 </table>

        </div>
    </div>
</div>
</body>
</html>

getALL.png

getOne.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <title>Title</title>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-sm-12">
            <table class="table table-bordered table-hover">
                <h2 class="text-center">用户信息表</h2>
                <tr>
                    <th>ID</th>
                    <th>名字</th>
                    <th>邮箱</th>
                    <th>密码</th>
                </tr>
                <?php foreach ($data as $row):?>
 <td><?php echo $row ?></td>
                <?php endforeach ?>
 </table>
        </div>
    </div>
</div>
</body>
</html>

QQ图片20180116160702.png

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