批改状态:合格
老师批语:总结的到位
抽象类的定义和使用
php抽象类定义关键字 abstract
抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容,而是声明方法时直接在方法名后加上分号结束,声明抽象方法要使用abstract关键字修饰。声明抽象方法格式:abstract function();
抽象类中的方法不能自己去实现,需要靠子类中去实现
1. 抽象类不能实例化
2. 抽象类中定义的抽象方法必须在子类中实现
<?php
//抽象类
namespace _1009;
//php抽象类定义关键字 abstract
abstract class Person1
{
//抽象类中的属性
protected $name;
//抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容,而是声明方法时直接在方法名后加上分号结束,声明抽象方法要使用abstract关键字修饰。声明抽象方法格式:abstract function();
// 签名, 抽象方法
public function __construct($name = '雄')
{
$this->name = $name;
}
abstract public function getName();
abstract public function setName($value);
}
//抽象类中的方法不能自己去实现,需要靠子类中去实现
//1. 抽象类不能实例化
//2. 抽象类中定义的抽象方法必须在子类中实现
class Stus extends Person1
{
public function getName()
{
return $this->name;
}
public function setName($value)
{
$this->name = $value;
}
}
$stu = new Stus('熊猫');
echo $stu->getName();
echo '<hr>';
$stu->setName('北极熊');
echo $stu->getName();点击 "运行实例" 按钮查看在线实例
接口的定义和使用
定义接口类 ,关键字 interface
实现接口 ,关键字 implements
<?php
namespace _1009;
//定义接口类 ,关键字 interface
interface Book
{
//设置书名
public function bookName($bookName);
//设置作者
public function bookZuoZhe($bookZuoZhe);
}
//实现接口 ,关键字 implements
class Read implements Book
{
public $bookName;
public $bookZuoZhe;
//实现接口里面的方法
public function bookName($bookName)
{
$this->bookName = $bookName;
}
//实现接口里面的方法
public function bookZuoZhe($bookZuoZhe)
{
$this->bookZuoZhe = $bookZuoZhe;
}
public function getXinxi()
{
return '《'.$this->bookName.'》'.'作者:'.$this->bookZuoZhe;
}
}
//客户端代码调用
$obj = new Read();
$obj->bookName('三体');
$obj->bookZuoZhe('刘念慈');
echo $obj->getXinxi();点击 "运行实例" 按钮查看在线实例
使用接口--实例演示数据库的curd操作
<?php
namespace _1009;
//接口实战
interface iCurd
{
//增加数据
public function create($data);
//查询数据
public function read();
//更新数据
public function update($data,$where);
//删除数据
public function delete($where);
}
//创建工作类,实现接口方法
class Db implements iCurd
{
//数据库的连接对象
protected $pdo = null;
//表名
protected $table;
//构造方法连接数据库
public function __construct($dsn, $user, $pwd, $table = 'staff')
{
//保存实例化后的pdo对象
$this->pdo = new \PDO($dsn, $user, $pwd);
//设置表名
$this->table = $table;
}
//添加数据
public function create($data)
{
// TODO: Implement create() method.
// 字段列表
$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);
//返回结果
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=chen';
$user = 'root';
$password = 'root';
$obj= new Db($dsn,$user,$password);
//$data = [
// 'name' => '万剑一',
// 'age' => 29,
// 'sex' => 1,
// 'position' => '祖传悲剧男',
// 'mobile' => '1389998899',
// 'hiredate' => time()
//];
//$res = $obj->create($data);
//echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];
//查询
foreach($obj->read() as $value){
print_r($value); echo '<br>';
}
echo '<hr>';
//修改
//$data = [
// 'name' => '张小凡',
// 'position' => '悲剧男二号'
//];
//print_r($obj->update($data,'staff_id = 16'));
//删除
//echo $obj->delete('staff_id = 16');点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号