1 写一个抽象类并继承它, 内容自定
实例
//抽象类
abstract class Car
{
//抽象属性
protected $brand;
public function __construct($brand = 'Rolls-Royce')
{
$this->brand = $brand;
}
public function getBrand()
{
return $this->brand;
}
// 抽象方法
abstract public function setBrand($value);
}
class Stu extends Car
{
//构造方法不会继承
public function __construct($brand)
{
parent::__construct($brand);
}
//抽象累中定义的抽象方法必须在子类中实现
public function setBrand($value)
{
$this->brand = $value;
}
}
$obj = new Stu('Rolls-Royce');
echo '汽车***之一:' . $obj->getBrand() . '
';
$obj = new Stu('Porsche');
echo '汽车***之一:' . $obj->getBrand() . '
';
?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
2 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法
查询方法截图:
修改数据方法截图:
删除方法截图:
实例
//接口开发实战
// 1、定义接口
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,$pwd,$table='staff')
{
$this->pdo = new \pdo($dsn, $user, $pwd);
$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;
//pdo执行
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
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查询语句
$sql = 'SELECT ' . $fields . ' FROM ' . $this->table . $where . $limit;
//pdo执行
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
//修改数据
public function update($data,$where2)
{
//设置查询字段
$Arr = array_keys($data);
$set = '';
foreach($Arr as $value){
$set .= $value . ' =:' . $value . ', ';
}
$set = rtrim($set, ', ');
//创建SQL语句
$sql = 'UPDATE ' . $this->table . ' SET ' . $set . ' WHERE ' . $where2;
//die($sql);
//PDO执行
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
//返回结果
return $stmt->rowCount();
}
//删除数据
public function delete($where3)
{
//构建sql语句
$sql = 'DELETE FROM ' . $this->table . ' WHERE ' . $where3;
//pdo执行
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->rowCount();
}
}
//客户端代码
$dsn = 'mysql:host=127.0.0.1;dbname=staff';
$user = 'root';
$pwd = 'root';
$db = new Db($dsn, $user, $pwd);
//新增数据
// $data = [
// 'name' => '大神',
// 'age' => 99,
// 'sex' => 1,
// 'position' => '救世主',
// 'mobile' => '400111111',
// 'hiredate' => time()
// ];
// $res = $db->create($data);
// echo '成功新增了:' . $res['count'] . '条记录,新增的记录的主键ID是:' . $res['id'];
//查询数据
$fields = ' name as 姓名,age as 年龄 ';
$where = ' age>30 ';
$limit = '0,20';
//遍历查询
foreach ($db->read($fields,$where,$limit) as $item){
print_r($item); echo '
';
}
//修改数据
$data =[
'age' => 40,
'position' => '神经大侠'
];
$where2 = 'staff_id = 18';
echo '成功更新了:' . $db->update($data,$where2) . ' 条记录';
echo '
';
//删除
$where3 = 'staff_id = 20';
echo '成功删除了:' . $db->delete($where3) . ' 条记录';
?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
小结:
1、抽象类:不能实例化,定义的抽象方法必须在子类中实现
抽象定义方法:
abstract class Name
{
abstract public function setSub( );
}
class sub extends Name
{
// ...
}
2、接口:接口是类的模板、类是对象的模板、对象是类的实例,接口大boss。
interface name { //... }
class sub implements name { //... }
3、抽象类、接口,语法理解简单,但是实操写方法等都需要强大的逻辑理解能力,多写多实操。