登录  /  注册
博主信息
博文 77
粉丝 0
评论 0
访问量 52176
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
抽象类、定义接口扩展curd方法_1009
Jet的博客
原创
733人浏览过

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

01.jpg

实例

<?php
//抽象类
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() . '<br />';
$obj = new Stu('Porsche');
echo '汽车***之一:' . $obj->getBrand() . '<br />';


?>

运行实例 »

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





2 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法

查询方法截图:

03.jpg

修改数据方法截图:

04.jpg

删除方法截图:

05.jpg

实例

<?php
//接口开发实战
// 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 '<br />';
}

//修改数据
$data =[
    'age'       => 40,
    'position'  => '神经大侠'
];

$where2  = 'staff_id = 18';
echo '成功更新了:' . $db->update($data,$where2) . ' 条记录';

echo '<hr>';

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




批改状态:合格

老师批语:语法不难, 难在灵活运用, 这涉及很多编程技巧 与思维模式
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学