php接口类 实现数据库CURD小案例

因为PHP只支持单继承,也就是说每个类只能继承一个父类。当声明的心累继承抽象类实现模板以后,它就不能再有其他的父类啦~

为了解决这个问题,php引入了接口(注意哈 这里说的是接口类 一种特殊的类 和编程中数据交换接口有区别不是一个概念)。这里说的接口是一种特殊的抽象类!如果抽象类中的所有方法都是抽象方法,name我们就可以换另外一种声明方式--使用‘接口’技术哈。

请注意一下几点:

接口中的声明的方法必须都是抽象方法

另外不能在接口中声明变量

只能使用const关键字声明为常量的成员属性

而且接口中的所有成员都必须有public的访问权限

接口类 声明使用interface关键字标识

class 类名 implements 接口一,接口二...接口N{

//记得实现接口中所有方法~~!

}

不够刺激是不是 来点干货,你拿到一个成熟系统想二次开发在结构上调整不太现实,那怎么破!这时可以通过定义一些接口并追加相应的实现来完成功能结构的拓展。

class 类名 extends 父类名 implement 接口一,接口二,接口三...{

// so 传送~ 实现所有接口中的抽象方法哈

}

实例

namespace _db;

//接口实战小案例

//定义一个接口,实现数据库的常用操作:CURD

interface iCurd

{

//增加数据

function create($data);

//读取数据

function read();

//更新数据

function update($data,$where);

//删除数据

function delete($where);

}

//创建DB类实现iCurd接口

class DB implements iCurd

{

//数据库的链接对象

protected  $pdo=null;

//数据库

protected $table;

//构造方法:链接数据库,并设置默认的数据表

public function __construct($dsn,$username,$password,$table)

{

$this->pdo=new \PDO($dsn,$username,$password);

$this->table=$table;

}

//增加数据

public function create($data)

{

//字段列表

$fields='(name,images,lyric,mus_url,classify,mus_play)';

$values='(:name,:images,:lyric,:mus_url,:classify,:mus_play)';

$sql='INSERT INTO '.$this->table . $fields .' VALUES '.$values;

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

$stmt->execute($data);

//        die($stmt->debugDumpParams());

//返回新增数据,新增记录id返回

return[

'count'=>$stmt->rowCount(),

'id'=>$this->pdo->lastInsertId()

];

}

//读取数据

public function read($fileds='*',$where='',$limit='0,10')

{

$this->fileds=$fileds;

$this->where=empty($where) ? '':' WHERE '. $where;

$this->limit=$limit;

$sql='SELECT '.$this->fileds.' FROM '.$this->table.$this->where.' LIMIT '.$this->limit;

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

$stmt->execute();

//        print_r($stmt->debugDumpParams());

//返回得到二维数组

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

}

//更新数据

public function update($data,$where)

{

//难点是set参数处理 使用array_keys可以拿到键

$keyArr=array_keys($data);

//准备用来存放条件

$set='';

foreach ($keyArr as $value){

$set.=$value.'=:'.$value.',';

}

//trim 可以去除前后空格 rtrim(var,'指定字符') 可以取除右边指定字符 ltrim(var,'指定字符')取左指定字符

$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();

//        die($stmt->debugDumpParams());

//返回删除的数量

return $stmt->rowCount();

}

}

//--------------------------提供数据库信息和实例化

//实例化DB

$dsn='mysql:host=127.0.0.1;dbname=music';

$username='root';

$password='root';

$table='musics';

$db=new DB($dsn,$username,$password,$table);

//--------------------------添加数据

//新增操作

$data=[

'name'=>'谢谢你的爱',

'images'=>'ldh.jpg',

'lyric'=>'不要问我一生曾经爱过多少人
你不懂我伤有多深
要剥开伤口总是很残忍
劝你别作痴心人
多情暂且保留几分
不喜欢孤独
却又害怕两个人相处
这分明是一种痛苦
在人多时候最沈默
笑容也寂寞
在万丈红尘中

找个人爱我

当我避开你的柔情后
泪开始坠落
是不敢不想不应该
再谢谢你的爱
我不得不存在

像一颗尘埃
还是会带给你伤害
是不敢不想不应该
再谢谢你的爱
我不得不存在

在你的未来
最怕这样就是带给你永远的伤害
不喜欢孤独
却又害怕两个人相处
这分明是一种痛苦
在人多时候最沉默
笑容也寂寞
在万丈红尘中

找个人爱我
当我避开你的柔情后
泪开始坠落
是不敢不想不应该
再谢谢你的爱
我不得不存在

像一颗尘埃
还是会带给你伤害
是不敢不想不应该
再谢谢你的爱
我不得不存在

在你的未来
最怕这样就是带给你永远的伤害
',

'mus_url'=>'http://music.xx***/music_id=1',

'classify'=>1,

'mus_play'=>'因版权原因暂停在线播放'

];

$res=$db->create($data);

echo '成功新增了'.$res['count'].'条记录,新增的记录的ID是:'.$res['id'];

echo '


';

//-------------------------查询数据 无条件查询

//foreach ($db->read() as $key => $value){

//    print_r($value);echo '
';

//};

//echo '


';

//-------------------------查询数据 限制返回字段 和条件

foreach ($db->read('mus_id,name,classify','','0,3') as $key => $value){

print_r($value);echo '
';

};

echo '


';

//-------------------------更新操作

$data=[

'mus_play'=>'因版权原因暂停在线下载',

'images'=>'dzq.jpg',

];

$where='mus_id=18';

echo '成功更新了:'.$db->update($data,$where).'条记录';

echo '


';

//-------------------------更新操作

$where='mus_id=24';

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

运行实例 »

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

php写接口curd,8.2 php接口类 实现数据库CURD小案例相关推荐

  1. 把接口调用打成jar包的类怎么写_直观讲解RPC调用和HTTP调用的区别

    来源 :浮生忆梦 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~N ...

  2. PTA(接口)用java写 7-10 房屋、住宅、写字楼类

    PTA(接口)用java写 7-10 房屋.住宅.写字楼类 编写一个Java程序,能够处理房屋.住宅.写字楼的信息. 分析楼房.住宅.写字楼之间的关系,分别定义类.其中,楼房是基类,用于描述一座楼房的 ...

  3. 如何写出完美的接口:接口规范定义、接口管理工具推荐

         无规矩不成方圆,为了开发人员间更好的配合,我特意整理了这么一篇文档供大家参考学习,如有意见.见解,请在评论区留言探讨. 接口规范说起来大,其实也就那么几个部分,接口规范.接口管理工具.接口文 ...

  4. java comparable接口作用_Java 中 Comparable 接口的意义和用法

    一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...

  5. html第三方接口,关于调用三方平台接口与推送接口的总结(2020.7.27)

    前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是  https://www.cnblogs.com/alanturingson/p/13377500.ht ...

  6. 航天金税 接口_用友凭证接口可以实现数据之间无缝对接和打通

    用友凭证接口可以实现数据之间无缝对接和打通 用友凭证接口支持数据源多样性: 凭证接口可以支持多种数据源.多种系统做接口集成,其中以医院HIS系统.航天金税系统.OA系统.其他软件业务系统等已经成功对接 ...

  7. java 关注公众号没有调接口_高频面试题:接口和抽象类的区别

    作为一个基础的Java高频面试题,是所有Java面试者必须烂熟于心的.当然不能死记硬背,可以通过实际地写几个小demo,边实际操作边理解,既能感受到编程的快乐,更重要的是真的理解记住了二者的区别. 此 ...

  8. Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字

    接口: 接口是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JD ...

  9. java 抽象接口_JAVA中的“抽象接口”

    在程序设计过程中,读者很可能遇到这样一种困境:设计了一个接口,但实现这个接口的子类并不需要实现接口中的全部方法,也就是说,接口中的方法过多,对于某些子类是多余的,我们不得不浪费的写上一个空的实现. 今 ...

最新文章

  1. do{}while(0) 作用
  2. 第6章 数组、指针与字符串(一)基于范围的for循环
  3. 对10个元素进行快速排序,在最好情况下,元素间的比较次数为( )次。
  4. safari 获取视频流_如何在Safari中将RSS feed和社交媒体合并为一个流
  5. 页面乱码及页面传值出现乱码
  6. mysql round 0.1111_听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(库函数,存储过程)...
  7. 使用 Autofill 插件快速提交BUG
  8. 国内Android源码下载教程
  9. 结构梁配筋最牛插件_YouTube 字幕翻译 —— Chrome 插件
  10. 计算机英语中级职称题库,职称计算机考试题库(中级职称需要考计算机吗)
  11. linux支持raid5阵列,Linux中raid磁盘阵列,磁盘阵列raid5
  12. 不仅仅是一种爱好:了解中国的电竞市场
  13. 必须要知道的多媒体知识-音视频编解码-h265、h264-直播-点播
  14. matlab留白,matlab作图导出为PDF去除留白插入latex
  15. 娱美德举办WEMIX空投活动以庆祝《传奇M》在全球发布!
  16. 软件接口设计 六大原则
  17. 计算机常用软件实验报告,计算机常用应用软件的安装和使用实验报告.doc
  18. 智能门锁开发全流程分享
  19. 文件服务器ipc,看图理解进程间通信IPC
  20. erlang调试方法

热门文章

  1. Android 之webView调试之路
  2. 红帽变“蓝”,IBM 豪赌云服务胜算几何?
  3. 2020电商新宠儿:天猫无货源模式,一位电商老手来告诉你怎么做
  4. Asizw--一款开关电路仿真软件使用方法(开关电流电路、开关电容电路的仿真)
  5. JAVA之JUC系列 - JAVA内存模型
  6. C++标准里 string和wstring
  7. SQL Server获取特定字符前的数字
  8. 深圳盛世光影传媒有限公司工作环境怎么样?
  9. hualinux 进阶 vue 4.1:axios跨源错误CORS解决
  10. U盘无法访问:硬盘结构损坏且无法读取