Blogger Information
Blog 31
fans 0
comment 0
visits 24375
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Day40-2018/1/15(写一个类似的案例,试一下用命名空间实现,并进行类的自动加载。)
SmallKing的博客
Original
851 people have browsed it

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

数据库名为: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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post