批改状态:合格
老师批语:当看到你写的接口工作正常, 有数据输出的时候, 是什么心情
1. 写一个抽象类并继承它, 内容自定

<?php
namespace _1009;
class Person1
{
protected $name;
public function __construct($name = '莫先生')
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setName($value)
{
$this->name = $value;
}
}
$person = new Person1();
echo '我的名字:' , $person->getName(), '<br>';
$person->setName('朱老师');
echo '我的姓名:' , $person->getName(), '<br>';
abstract class Person2
{
// 抽象属性
protected $name;
public function __construct($name = '莫先生')
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
// 签名
abstract public function setName($value);
}
// 抽象类不能实例化,不能new,只能继承 在子类中实现
class Stu extends Person2
{
// 构造方法不会继承
public function __construct($name)
{
parent::__construct($name);
}
public function setName($value)
{
$this->name = $value;
}
}
echo '<hr>';
$stu = new Stu('毛先生');
echo '我就是创始人: ' . $stu->getName(). '<br>';
$stu->setName('朱先生');
echo '你就是救世主:' . $stu->getName(). '<br>';
?>点击 "运行实例" 按钮查看在线实例
2. 模仿课堂案例,写一个接口实现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
{
// 数据库的连接对象
protected $pdo = null;
// 数据表名
protected $table;
// 构造方法,连接数据库,并设置默认数据表名称
public function __construct($dsn, $user, $password, $table='staff')
{
$this->pdo = new \PDO($dsn, $user, $password);
$this->table = $table;
}
// 增加数据
public function create($data)
{
// 字段列表
$fields = ' (name,age,sex,position,mobile,hiredate)';
// 值列表
$values = '(:name,:age,:sex,:position,:mobile,:hiredate)';
// 创建SQL语句
$sql = 'INSERT INTO '.$this->table.$fields.' VALUES '.$values;
// 预处理执行新增操作
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
// 返回新增数量,新增记录的ID组成的数组
return [
'count'=>$stmt->rowCount(),
'id'=>$this->pdo->lastInsertId()
];
}
// 读取数据
public function read($fields='*', $where='', $limit='0, 5')
{
// 设置查询条件
$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 = '';
// 遍历键名表示的字段列表,拼装预处理需要的sql语句,注意占符符的表示
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=php';
$user = 'root';
$password = 'root';
$db = new Db($dsn, $user, $password);
// 遍历
foreach ($db->read() as $item){
print_r($item);echo '<br>';
}
echo '<hr>';
// 新增数据
//$data = [
// 'name'=>'郭靖',
// 'age'=>30,
// 'sex'=>1,
// 'position'=>'金刀驸马',
// 'mobile'=>'13666668888',
// 'hiredate'=>time()
//];
//$res = $db->create($data);
//echo '成功新增'.$res['count'].'条记录,最新记录的主键ID是: '.$res['id'];
echo '<hr>';
//// 更新
//$data = [
// 'age' => 35,
// 'position' => '抗金英雄'
//];
//
//$where = 'staff_id = 13';
//echo '成功更新了:' . $db->update($data, $where). ' 条记录';
//echo '<hr>';
$where = 'staff_id = 13';
echo '成功删除了:' .$db->delete($where). '条记录';
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号