登录  /  注册
博主信息
博文 20
粉丝 1
评论 2
访问量 16189
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
1. 写一个抽象类并继承它, 内容自定 2. 模仿课堂案例,写一个接口实现CURD操作, 并扩展一到二个方法 补1009作业
月迎下弦的博客
原创
945人浏览过

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

abstract: 定义抽象方法/抽象类

类中只要有一个抽象方法, 该类就应该声明为抽象类

抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现

实现抽象方法的子类方法可见性不能低于抽象方法原定义

抽象方法是public, 子类方法只能是public

抽象方法是protected, 子类方法只能是protected/public

****

类中只要有一个成员设置为抽象,该类就必须设置抽象类

一个类一旦被设置为抽象类,就具备了二个特点:

不能实例化

类中抽象方法,在子类中必须实现(全部),就是子类必须有父类的抽象方法

注意:

属性设置为抽象无意义, 抽象仅针对方法,类

子类的成员可见性必须等于或高于所继承的抽象类成员可见性,例如抽象类是proteced,子类可以是protected/pulic

子类重写的抽象方法可见性,究竟用protected/pulic, 要看这个子类是最终被客户端访问,如果是就public,如果不是protected

级别:

public 级别最高: A

protected 级别中等: B

private 级别最低: C

抽象类.jpg



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

1010_01.jpg

1010_02.jpg

1010_03.jpg

1010_04.jpg

1010_05.jpg

实例

<?php 
namespace _1015;
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='task')
    {       
            $this->pdo= new \PDO($dsn,$user,$pwd);
            $this->table=$table;
    }
    
    //  增加数据
    public function create($data)
    {
        //字段列表
        $fields = ' (name,age,sex,position,mobile,hiredate,display) ';
        //值列表
        $values = ' (:name, :age, :sex, :position, :mobile, :hiredate,:display)';
        //创建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='display=1',$limit='6,13')
    {
            //设置条件
            $where = empty($where) ? '' : ' WHERE ' . $where;
     
            //设置显示数量
            $limit= ' LIMIT ' . $limit;
            $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)
    {
        $keyArr=\array_keys($data);
        $set= '';
        foreach ($keyArr as $value ) {
            $set .= $value . ' =:' .$value.', ';
        }
        $set = \rtrim($set,', ');
        $sql = 'UPDATE ' .$this->table . ' SET ' .$set . ' WHERE '.$where;
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($data);
        return $stmt->rowCount();

    }
    //删除数据
    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=test';
$user = 'root';
$pwd = 'root';
$db= new DB($dsn ,$user , $pwd);

//     foreach ($db->read() as $item ) {
//         \print_r($item); echo   '<br>';
// }
echo '<hr>';
//增加数据
// $data = [
//         'name' =>'郭靖',
//         'age' =>999,
//         'sex' =>1,
//         'position' =>'射雕英雄',
//         'mobile' =>88888888888,
//         'hiredate' =>\time(),
//         'display' =>1
// ];
//  $res = $db->create($data);
//  echo   '<span style="color:#eb6100">成功增加了:' . $res['count'] .'条记录,'.'</span>'. '<span style="color:#0f7884">新增的主键ID是:'.$res['id'].'</span>';

//  echo '<br><span style="color:#662a00">' ;
//  foreach ($db->read() as $item ) {
//     \print_r ($item); echo   '<br>';
// }
// echo '</span>';


//  更新数据
// $data = [
//         'age' =>9999,
//         'position' =>'抗金英雄'
// ];
// $where = 'task_id = 80';
// echo '<br>';
// echo   '<span style="color:#eb6100">成功更新了:' . $db->update($data,$where) .'条记录,'.'</span>';
// echo '<br><span style="color:#662a00">' ;
// foreach ($db->read() as $item ) {
//    \print_r ($item); echo   '<br>';
// }
// echo '</span>';

// 删除
// $where = 'task_id=11';
// echo    '成功删除了:' . $db->delete($where) . ' 条记录';

$data = [
          'display' =>0
];
$where = 'position = \'射雕英雄\'';
echo   '成功清空了:' . $db->update($data,$where). ' 条记录';
echo '<br>';
echo '<br><span style="color:red">' ;
foreach ($db->read() as $item ) {
   \print_r ($item); echo   '<br>';
}
echo '</span>';

运行实例 »

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


批改状态:合格

老师批语:很多知识 , 望文生义, 所谓抽象就是不具体, 不能直接拿来用, 理解这点, 也就记住了
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学