博客列表 >10月9日作业;创建一个抽象类,并继承它;实战使用接口完成数据库CURD操作

10月9日作业;创建一个抽象类,并继承它;实战使用接口完成数据库CURD操作

星空的博客
星空的博客原创
2019年10月14日 19:21:441063浏览

一、抽象类:实践

实例

<?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>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

QQ截图20191014190009.png

QQ截图20191014190026.png


二、使用接口 实现 新增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'];
1.png

QQ截图20191014170147.png

三、接口实战修改更新 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).'条记录';

运行实例 »

点击 "运行实例" 按钮查看在线实例

删除.png


总结:

        有一个方法没有实现,抽象方法。这个类也叫抽象类;父类中的构造方法不会被继承;父类中的定义抽象方法必须在子类中现实!

        接口是类的模板,使用关键字interface定义一个接口,关键字 implements:类是接口的实现,类是对象的模板,对象是类的实例!

         接口实战操作数控方法,应该更加把操作方法记牢!

QQ截图20191014191956.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议