登录  /  注册
博主信息
博文 37
粉丝 0
评论 1
访问量 28558
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
抽象类实例以及接口实现CURD操作-2019-10-11
H先生
原创
645人浏览过



    1. 写一个抽象类并继承它, 内容自定



抽象.png



实例

<?php


namespace _1009;

class Person1
{
    protected $name;

    public function __construct($name = '莫先生')
    {
         $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }

    public function setName($value)
    {
        $this->name = $value;
    }
}

$person = new Person1();
echo '我的名字:' , $person->getName(), '<br>';
$person->setName('朱老师');
echo '我的姓名:' , $person->getName(), '<br>';


abstract    class Person2
{
//    抽象属性
    protected $name;

    public function __construct($name = '莫先生')
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
    // 签名
    abstract public function setName($value);

}

// 抽象类不能实例化,不能new,只能继承 在子类中实现

class Stu extends Person2
{
    // 构造方法不会继承
    public function __construct($name)
    {
        parent::__construct($name);
    }

    public function setName($value)
    {
        $this->name = $value;
    }

}

echo '<hr>';
$stu = new Stu('毛先生');
echo '我就是创始人: ' . $stu->getName(). '<br>';

$stu->setName('朱先生');
echo '你就是救世主:' . $stu->getName(). '<br>';

?>

运行实例 »

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



2. 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法



CURD.png






实例

<?php

namespace _1009;

// 接口实战

interface iCurd
{
    // 增加数据
    public function create($data);

    //读取数据
    public function read();

    // 更新数据
    public function update($data, $where);

    // 删除数据
    public function delete($where);
}

//创建Db类,实现iCurd接口,完成基本的数据库操作

class Db implements iCurd
{
    // 数据库的连接对象
    protected $pdo = null;

    // 数据表名
    protected $table;

    // 构造方法,连接数据库,并设置默认数据表名称
    public function __construct($dsn, $user, $password, $table='staff')
    {
        $this->pdo = new \PDO($dsn, $user, $password);
        $this->table = $table;
    }

    // 增加数据
    public function create($data)
    {
        // 字段列表
        $fields = ' (name,age,sex,position,mobile,hiredate)';

        // 值列表
        $values = '(:name,:age,:sex,:position,:mobile,:hiredate)';

        // 创建SQL语句
        $sql = 'INSERT INTO '.$this->table.$fields.' VALUES '.$values;

        // 预处理执行新增操作
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);
         // 返回新增数量,新增记录的ID组成的数组
        return [
            'count'=>$stmt->rowCount(),
            'id'=>$this->pdo->lastInsertId()
        ];
    }


    // 读取数据
    public function read($fields='*', $where='', $limit='0, 5')
    {
        // 设置查询条件
        $where = empty($where) ? '' : ' WHERE ' . $where;

        // 设置显示数量
        $limit = ' LIMIT ' . $limit;

        $sql = 'SELECT '.$fields.' FROM ' .$this->table.$where.$limit;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();

        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

    // 更新数据
    public function update($data, $where)
    {
        // 获取数组的键名组成的数组
        $keyArr = array_keys($data);
        $set = '';

        // 遍历键名表示的字段列表,拼装预处理需要的sql语句,注意占符符的表示
        foreach ($keyArr as $value){
            $set .= $value . ' = :' .$value. ', ';
        }

        // 去掉最后一个逗号, 注意每个逗号后有一个空格,去除时也要带上这个空格
        $set = rtrim($set, ', ');

        // 预处理执行更新操作
        $sql = 'UPDATE ' . $this->table. ' SET ' . $set . ' WHERE ' . $where;

        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        // 返回被更新的记录数量
        return $stmt->rowCount();
    }

    // 删除数据
    public  function delete($where)
    {
        $sql = 'DELETE FROM ' .$this->table . ' WHERE ' .$where;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute();
        return $stmt->rowCount();
    }
}


// 客服端代码
$dsn = 'mysql:host=127.0.0.1;dbname=php';
$user = 'root';
$password = 'root';
$db = new Db($dsn, $user, $password);

// 遍历
foreach ($db->read() as $item){
    print_r($item);echo '<br>';
}

echo '<hr>';

// 新增数据
//$data = [
//    'name'=>'郭靖',
//    'age'=>30,
//    'sex'=>1,
//    'position'=>'金刀驸马',
//    'mobile'=>'13666668888',
//    'hiredate'=>time()
//];
//$res = $db->create($data);
//echo '成功新增'.$res['count'].'条记录,最新记录的主键ID是: '.$res['id'];

echo '<hr>';

//// 更新
//$data = [
//    'age' => 35,
//    'position' => '抗金英雄'
//];
//
//$where = 'staff_id = 13';
//echo '成功更新了:' . $db->update($data, $where). ' 条记录';
//echo '<hr>';

$where = 'staff_id = 13';
echo '成功删除了:' .$db->delete($where). '条记录';


?>

运行实例 »

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































批改状态:合格

老师批语:当看到你写的接口工作正常, 有数据输出的时候, 是什么心情
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学