php抽象方法db(),抽象类与DB类的操作扩展--2019年10月9日

抽象类

什么是抽象类?

定义

只要一个类里面有一个方法是抽象方法,那么这个类就要定义为抽象类

抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性

但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用”abstract”来修饰。

什么是抽象方法?

类里面定义的没有方法体的方法就是抽象方法

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

抽象类注意点

抽象类不能被实例化

子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化类<?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').'


';

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

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

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

DB类扩展方法<?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 '

';

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值