博客列表 >抽象类和接口CURD操作-2019-10-09作业

抽象类和接口CURD操作-2019-10-09作业

零度 的博客
零度 的博客原创
2019年10月13日 16:46:02745浏览

一:抽象类并继承

实例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019\10\13 0013
 * Time: 08:16
 */
//****************抽象类***************//
abstract class demo
{
    // 抽象类方法
    protected abstract function get();
    protected abstract  function set($is);

    // 写普通方法试一试(非抽象方法)
    public function name($a) {
        return  $a ;
    }
}
//****************继承抽象类***************//
class demo11 extends demo
{
    //继承一个抽象类的时候,子类必须定义父类中的所有抽象方法
    public function get() {
        return '不传值';
    }

    public function set($is) {
        return $is. '传值';
    }
}


$class = new demo11;
//普通方法这里会报错
echo $class->name().'<hr>';
//非传值形式
echo $class->get( ).'<hr>' ;
//传值形式
echo $class->set('我是').'<hr>' ;

运行实例 »

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

二:接口实现CURD操作

实例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019\10\13 0013
 * Time: 09:01
 */
namespace _1009;

//接口
interface iCurd
{
    //增
    public function create($data)
    //删
    public function delete($where);
    //改
    public function update($data,$where);
    //查
    public function read();



    

}

//工作类,实现接口
class Db implements iCurd
{
    //数据库的连接对象
    protected $pdo = null;

    //表名
    protected $table;

    //构造方法连接数据库
    public function __construct($dsn, $user, $pwd, $table = 'movies')
    {
        //保存实例化后的pdo对象
        $this->pdo = new \PDO($dsn, $user, $pwd);
        //设置表名
        $this->table = $table;

    }

    //添加数据
    public function create($data)
    {
        // TODO: Implement create() method.
        // 字段
        $fields = ' (mov_id, name, image,detail, cate_id) ';
        // 值
        $values = ' (:mov_id, :name, :image, :detail, :cate_id) ';
        //创建sql语句
        $sql = 'INSERT INTO '.$this->table . $fields.' VALUES '.$values;
//        die($sql);
        //预处理语句
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);

        //返回结果
        return [
            //返回受影响行数
            'count' => $stmt->rowCount(),
            //返回主键ID
            'id' => $this->pdo->lastInsertId()
        ];
    }

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

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

//        拼接sql语句
        $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)
    {
        // 字段列表
        $keys = array_keys($data);
        $set = '';
        foreach ($keys as $value) {
            $set .= $value . ' = :' . $value. ', ';
        }
        $set = rtrim($set, ', ');
        //创建sql语句
        $sql = 'UPDATE '.$this->table . ' SET '.$set.' WHERE '.$where;

        //预处理语句
        $stmt = $this->pdo->prepare($sql);

        //执行,绑定参数
        $stmt->execute($data);
        //返回结果
        return [
            //返回受影响行数
            'count' => $stmt->rowCount(),
            //返回主键ID
            'id' => $this->pdo->lastInsertId()
        ];
    }

    //删除数据
    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=ceshi';
$user = 'root';
$password = 'root';
$obj= new Db($dsn,$user,$password);
$data = [
    'mov_id' => '10',
    'name' => '测试电视剧',
    'image' => '1.jpg',
    'detail' => '测试少时诵诗书所所所所所所所',
    'cate_id' => '3',

];
//增加
//$res = $obj->create($data);
//echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];
////查询
//foreach($obj->read() as $value){
//    print_r("<pre>");
//    print_r($value );
//}
echo '<hr>';
//修改
$data = [
    'name' => '妈***朋友',
    'image' => 'mm.jpg'
];
print_r($obj->update($data,'mov_id = 1'));

//删除
//echo $obj->delete('mov_id = 10');

运行实例 »

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

总结

抽象:

关键词abstract

抽象类不能实例化
抽象类中定义的抽象方法必须在子类中实现


接口:

定义接口类 ,关键字 interface

实现接口 ,关键字 implements

不能够定义静态变量(常量除外)

定义的常量不能在子类中覆盖 子类引用: 接口名称::常量名

接口能在开发中起到规范的作用




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