批改状态:合格
老师批语:作业才写到这里, 看来得加速了
先是抽象类的继承:
<?php
abstract class k
{
//抽象属性
public $c;
//初始化
public function __construct($c=30){
$this->c=$c;
}
//方法
public function kk(){
return $this->c;
}
//签名
abstract public function setC($value);
}
class k2 extends k
{
public function __construct($c){
parent::__construct($c);
}
public function setC($value)
{
$this->c=$c;
}
}
$k2 = new k2(666666);
echo '值:'.$k2->kk();
?>点击 "运行实例" 按钮查看在线实例

写CURD案例:并拓展了一个加法:
<?php
namespace _1009;
interface iCurd
{
// 增加数据
public function create($data);
// 读取数据
public function read();
// 更新数据
public function update($data, $where);
// 删除数据
public function delete($where);
}
// 创建Db类, 实现iCurd接口,完成基本的数据库操作
class Db implements iCurd
{
//拓展
public static $a;
public static $m;
// 数据库的连接对象
protected $pdo = null;
// 数据表
protected $table;
//拓展的方法
public static function k($m,$a)
{
return "{$m}+{$a}=".($m+$a);
}
// 构造方法: 实例化时连接数据库,并设置默认的数据表名称
public function __construct($dsn, $user, $password, $table='ying')
{
$this->pdo = new \PDO($dsn, $user, $password);
$this->table = $table;
}
// 增加数据
public function create($data)
{
// 字段列表
$fields = ' (name, image, detail) ';
// 值列表
$values = ' (:name, :image, :detail) ';
// 创建SQL
$sql = 'INSERT INTO '.$this->table.$fields. ' VALUES ' . $values;
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
return [
'count' => $stmt->rowCount(),
'id' => $this->pdo->lastInsertId()
];
}
// 读取数据
public function read($fields='*', $where='', $limit='0, 11')
{
//设置条件
$where = empty($where) ? '' : ' WHERE ' . $where;
// 设置显示数量
$limit = ' LIMIT ' . $limit;
$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)
{
$keyArr = array_keys($data);
$set = '';
foreach ($keyArr as $value) {
$set .= $value . ' = :' . $value. ', ';
}
$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();
return $stmt->rowCount();
}
}
// 客户端的代码
$dsn = 'mysql:host=127.0.0.1;dbname=chubu';
$user = 'root';
$password = 'root';
$db = new Db($dsn, $user, $password);
//遍历
foreach ($db->read() as $item) {
print_r($item); echo '<br>';
}
echo '<hr>';
echo Db::k(10,66);
//新增
$data = [
'name' => '天气之子',
'image'=>'77.jpg',
'detail'=>'牺牲一人就可以改变天气的故事'
];
$res = $db->create($data);
echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];
echo '<hr>';
//更新
$data = [
'image' => '6666.jpg',
'detail'=>'很好看'
];
$where = 'mov_id = 12';
echo '成功的更新了: ' . $db->update($data, $where) . ' 条记录';
//删除
$where = 'mov_id = 12';
echo '成功的删除了: ' . $db->delete($where) . ' 条记录';
?>点击 "运行实例" 按钮查看在线实例
相关截屏:






查找并有一个拓展减法:

对于抽象的理解:和之前学习的方法相比就是没有写完的方法,没有具体实现,没有值
对于用接口写CURD,和前一天用链式调用数据库查询放在一起理解就很好理解,独自写还差火候。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号