php接口扩展的关键字,抽象类、定义接口扩展curd方法_1009

1 写一个抽象类并继承它, 内容自定

b992d20957160ea308ac9ac0c7f77af2.png

实例

//抽象类

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操作, 并扩展一到二个方法

查询方法截图:

0e4aea132037f8c2f631d8c360176db7.png

修改数据方法截图:

ddd1ffc23d1f0ff0516283a0f017bf81.png

删除方法截图:

d8765281e2c72f17dda0ceba4decc8a0.png

实例

//接口开发实战

// 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、抽象类、接口,语法理解简单,但是实操写方法等都需要强大的逻辑理解能力,多写多实操。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值