批改状态:合格
老师批语:学习是要总结的, 总结 之后, 就可以记住 了
一:抽象类并继承
<?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
不能够定义静态变量(常量除外)
定义的常量不能在子类中覆盖 子类引用: 接口名称::常量名
接口能在开发中起到规范的作用
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号