一、抽象类:实践
<?php
//抽象类
namespace _1009;
class Person1
{
protected $name;
public function __construct($name='PHP')
{
$this->name=$name;
}
//获取方法
public function getName()
{
return $this->name;
}
//设置器,设置方法
public function setName($value)
{
$this->name=$value;
}
}
$person= new Person1();
echo '我在练习:',$person->getName(),'<hr>';
$person->setName('HTML');
echo '再学习:',$person->getName(),'<br>';
echo '<hr>';
abstract class Person2
{
//可以叫抽象属性
protected $name;
public function __construct($name='PHP')
{
$this->name=$name;
}
public function getName()
{
return $this->name;
}
//有一个方法没有实现,抽象方法
abstract public function setName($value);
}
//抽象类,不能被实例化;抽象类定义的抽象方法必须在子类中实现
class Stu extends Person2
{
//构造方法不会被继承
public function __construct($name)
{
parent::__construct($name);
}
//父类中的定义抽象方法必须在子类中现实
public function setName($value)
{
$this->name=$value;
}
}
$stu= new Stu('JS');
echo '到php中文网学习:'.$stu->getName().'<hr>';
$stu->setName('CSS');
echo 'php中文网还可以学习到:'.$stu->getName().'<br>';点击 "运行实例" 按钮查看在线实例
二、实战接口:CURD
1.创建一个接口,查询ouyangke数据中的movies表前5行数据!
<?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 $obj=null;
//数据表
protected $table;
//构造方法:连接数据库,并设置默认的数据表名称
public function __construct($dsn,$user,$password,$table='movies')
{
$this->pdo= new \PDO($dsn,$user,$password);
$this->table=$table;
}
//增加数据:INSERT INTO数据表(字段1,字段2...) VALUES ('值1','值2'...)
public function create($data)
{
}
//读取数据:SELECT字段列表FROM数据表名WHERE 查询条件
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;
//创建SQL语句对象
$stmt=$this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
//更新数据:UPDATE数据表SET字段1='值1',字段2='值2'... WHERE 更新条件
public function update($data,$where)
{
}
//删除数据:DELETE FROM数据表WHERE 删除条件
public function delete($where)
{
}
}
//客户端的代码
$dsn='mysql:host=127.0.0.1;dbname=ouyangke';
$user='root';
$password='root';
$db=new Db($dsn,$user,$password);
//遍历数据表
foreach ($db->read() as $item){
print_r($item);echo '<br>';
}
echo '<hr>';点击 "运行实例" 按钮查看在线实例


二、使用接口 实现 新增myblog数据库,student 表的一行数据
<?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 $obj=null;
//数据表
protected $table;
//构造方法:连接数据库,并设置默认的数据表名称
public function __construct($dsn,$user,$password,$table='student')
{
$this->pdo= new \PDO($dsn,$user,$password);
$this->table=$table;
}
//增加数据:INSERT INTO数据表(字段1,字段2...) VALUES ('值1','值2'...)
public function create($data)
{
// 字段列表
$fields = ' (name, course, grade) ';
// 值列表
$values = '(:name, :course, :grade) ';
// 创建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()
];
}
//读取数据:SELECT字段列表FROM数据表名WHERE 查询条件
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;
//创建SQL语句对象
$stmt=$this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
//更新数据:UPDATE数据表SET字段1='值1',字段2='值2'... WHERE 更新条件
public function update($data,$where)
{
}
//删除数据:DELETE FROM数据表WHERE 删除条件
public function delete($where)
{
}
}
//客户端的代码
$dsn='mysql:host=127.0.0.1;dbname=myblog';
$user='root';
$password='root';
$db=new Db($dsn,$user,$password);
//遍历数据表
foreach ($db->read() as $item){
print_r($item);echo '<br>';
}
echo '<hr>';
// 新增
$data = [
'name' => '周星驰',
'course' => 'js',
'grade' => 99,
];
$res = $db->create($data);
echo '成功的新增了: '. $res['count'].' 条记录,新增的记录的主键ID是: ' . $res['id'];

三、接口实战修改更新 ouyangke数控中的student表内容
<?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 $obj=null;
//数据表
protected $table;
//构造方法:连接数据库,并设置默认的数据表名称
public function __construct($dsn,$user,$password,$table='student')
{
$this->pdo= new \PDO($dsn,$user,$password);
$this->table=$table;
}
//增加数据:INSERT INTO数据表(字段1,字段2...) VALUES ('值1','值2'...)
public function create($data)
{
}
//读取数据:SELECT字段列表FROM数据表名WHERE 查询条件
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;
//创建SQL语句对象
$stmt=$this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
//更新数据:UPDATE数据表SET字段1='值1',字段2='值2'... WHERE 更新条件
public function update($data,$where)
{
//需要用array_kets()函数 拆分数组,trim()函数删除指定字符
$keyArr = array_keys($data);
$set = '';
foreach ($keyArr as $value) {
$set .= $value . ' = :' . $value. ', ';
}
$set = rtrim($set, ', ');
$sql = 'UPDATE ' . $this->table. ' SET ' . $set . ' WHERE ' . $where;
die($sql);
$stmt = $this->pdo->prepare($sql);
$stmt->execute($data);
return $stmt->rowCount();
}
//删除数据:DELETE FROM数据表WHERE 删除条件
public function delete($where)
{
}
}
//客户端的代码
$dsn='mysql:host=127.0.0.1;dbname=myblog';
$user='root';
$password='root';
$db=new Db($dsn,$user,$password);
//遍历数据表
foreach ($db->read() as $item){
print_r($item);echo '<br>';
}
echo '<hr>';
//更新操作
$data=[
'name'=>'吴孟达',
'course'=>'html5',
'grade'=>66
];
$where='id=17';
echo '成功的更新了:'. $db->update($data, $where).'条记录';点击 "运行实例" 按钮查看在线实例
四,使用接口操作删除ouyangke数据库表中的行
<?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 $obj=null;
//数据表
protected $table;
//构造方法:连接数据库,并设置默认的数据表名称
public function __construct($dsn,$user,$password,$table='student')
{
$this->pdo= new \PDO($dsn,$user,$password);
$this->table=$table;
}
//增加数据:INSERT INTO数据表(字段1,字段2...) VALUES ('值1','值2'...)
public function create($data)
{
}
//读取数据:SELECT字段列表FROM数据表名WHERE 查询条件
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;
//创建SQL语句对象
$stmt=$this->pdo->prepare($sql);
$stmt->execute();
//返回结果
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
//更新数据:UPDATE数据表SET字段1='值1',字段2='值2'... WHERE 更新条件
public function update($data,$where)
{
}
//删除数据:DELETE FROM数据表WHERE 删除条件
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=myblog';
$user='root';
$password='root';
$db=new Db($dsn,$user,$password);
//遍历数据表
foreach ($db->read() as $item){
print_r($item);echo '<br>';
}
echo '<hr>';
//删除数据
$where='id=17';
echo '成功删除了:'. $db->delete($where).'条记录';点击 "运行实例" 按钮查看在线实例

总结:
有一个方法没有实现,抽象方法。这个类也叫抽象类;父类中的构造方法不会被继承;父类中的定义抽象方法必须在子类中现实!
接口是类的模板,使用关键字interface定义一个接口,关键字 implements:类是接口的实现,类是对象的模板,对象是类的实例!
接口实战操作数控方法,应该更加把操作方法记牢!

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号