博主信息
博文 9
粉丝 0
评论 0
访问量 8492
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
抽象类与DB类的操作扩展--2019年10月9日
错过博客
原创
677人浏览过

抽象类


什么是抽象类?

定义

只要一个类里面有一个方法是抽象方法,那么这个类就要定义为抽象类
抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性
但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用”abstract”来修饰。

什么是抽象方法?

类里面定义的没有方法体的方法就是抽象方法
在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键 字“abstract”来修饰

抽象类注意点

抽象类不能被实例化
子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

<?php

namespace demo;

//抽象类Demo

//该类有abstract关键字声明

//该类中中abstrct声明的抽象方法get()

abstract class Demo

{

    //抽象属性name

    protected $name;

    public function __construct($name '张三')

    {

        $this->name = $name;

    }

    public function get($value)

    {

        echo '该类中的抽象属性'.$value.'的值为:'.$this->name;

    }

    //抽象方法set

    abstract public function set($value);

}

//Demo2类继承抽象类Demo

//nameDemo2类中必须要实现Demo类的中所有抽象的方法,否则Demo2类不能实例化

class Demo2 extends Demo

{

    public function __construct($name)

    {

        parent::__construct($name);

    }

    public function set($value)

    {

      $this->name=$value;

    }

}

$obj=new Demo2('张三');

echo $obj->get('name').'<hr>';

$obj->set('李四');

echo '经过set方法更改值后:'.'<br>';

echo $obj->get('name');

DB类扩展方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

<?php

namespace demo;

//curd接口

interface iCurd

 {

    public function create($data);

    public function delete($where);

    public function update($data,$where);

    public function select();

 }

 class DB implements iCurd

 {

     protected $pdo = null;

     protected $table;

     public function __construct($dsn,$user,$pwd,$table)

     {

         $this->pdo = new \PDO($dsn$user$pwd);

         $this->table = $table;

     }

     public function create($data)

     {

          

         $fields ' (name, momey, info) ';

         $values ' (:name, :momey, :info) ';

         $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 delete($where)

     {

         $sql 'DELETE FROM ' .$this->table . ' WHERE ' .$where;

         $stmt $this->pdo->prepare($sql);

         $stmt->execute();

         return $stmt->rowCount();

     }

     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 select($fields='*',$where='',$limit='0,5')

     {

         //设置条件

         $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);

     }

     /**

      * 获取数据表中字段值集合

      * @return array

      */

     public function get_fields() {

         $fields = [];

         $sql="SHOW COLUMNS FROM {$this->table}";

         $stmt $this->pdo->prepare($sql);

         $stmt->execute();

         $fields=[];

         foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC) as $v){

                $fields[]=$v['Field'];

         }

         return $fields;

     }

     /**

      * 判断字段在数据表中时候存在

      * @param $field 需判断的字段值

      * @return string

      */

     public function field_exists($field) {

         $fields $this->get_fields($this->table);

         return in_array($field$fields)?'字段'.$field.'存在':'不存在';

     }

 }

 $dsn='mysql:host=127.0.0.1;dbname=demo';

$user='root';

$pwd='root';

$table='test';

$db=new DB($dsn,$user,$pwd,$table);

echo '<pre>';

var_dump($db->create(['name'=>'张三','momey'=>'8888','info'=>'测试张三']));

//var_dump($db->field_exists('name'));

批改状态:合格

老师批语:你的获取字段和判断是否存在字段的方式有问题, 想一下为什么?
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

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