抽象类和接口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
不能够定义静态变量(常量除外)
定义的常量不能在子类中覆盖 子类引用: 接口名称::常量名
接口能在开发中起到规范的作用