一、抽象类:实践
实例
<?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:类是接口的实现,类是对象的模板,对象是类的实例!
接口实战操作数控方法,应该更加把操作方法记牢!