欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-20 23:10:03
...

一:抽象类并继承

实例

<?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

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

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

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