php利用api更新自己数据库,利用接口实现一个基本数据库的操作类(CURD)——2019年8月2日22时03分...

本文介绍了PHP中的类自动加载机制,使用`spl_autoload_register`结合`str_replace`和`file_exists`实现类文件的自动加载。同时,讲解了抽象类和接口的概念,包括抽象方法的定义与实现。示例中展示了如何创建一个实现了数据库CURD操作的接口`iCurd`,并创建其实现类`sub`,包含了增删查改的方法,用于数据库交互。
摘要由CSDN通过智能技术生成

类的自动加载

str_replace() 字符串替换语法

sql_autoload_register( function(){} ) 自动加载函数

file_exists() 确定文件是否存在

抽象类与抽象方法:

abstract 抽象关键字;

抽象类不能实例化,类中抽象方法必须在子类全部实现;

abstract public function setName ($value); 抽象方法

在子类 创建public function setName($value); 实现父类的抽象方法

接口原理与实现

interface {} 定义一个接口;

implement 类实现接口的关键字

注意:

1.接口不能实例化;

2.接口中只允许出现抽象方法;

3.接口中成员必须是公共/public;

4.允许有常量;

5.实现接口的子类,必须将接口的抽象方法全部实现;

类的自动加载class Loader

{

public static function autoLoader()

{

sql_autoload_register(function($className){

$path = str_replace('\\','/',$className);

$path = __DIR__ . '/' . $path . 'php';

if(file_exists($path)){

require $path ;

}

});

}

}

实例

namespace demo;

//定义一个接口

interface iCurd

{

//增加

public function create($data);

//查询

public function read();

//设置

public function update($data,$where);

//删除

public function delete($where);

}

class sub implements iCurd

{

//连接对象

protected $pdo=null;

protected $table='staff';

//连接数据库

public function __construct($dsn,$username,$password,$table)

{

$this->pdo = new \PDO($dsn,$username,$password);

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

//sql预处理

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

//            die($stmt->debugDumpParams());

$stmt->execute($data);

//返回新增数据

return [

'count' => $stmt->rowCount(),

'id' => $this->pdo->lastInsertId()

];

}

//查询方法

public function read($fields = '*',$where = '',$limit = '0, 5')

{

$where = empty($where) ? $where : ' WHERE '.$where;

$limit = ' LIMIT '.$limit;

$sql = 'SELECT '.$fields . ' FROM '.$this->table . $where . $limit;

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

$stmt -> execute();

//            die($stmt->debugDumpParams());

return $stmt->fetchAll(\PDO::FETCH_ASSOC);

}

//更新方法

public function update($data,$where)

{

// 获取$data的键值

$keyArr = array_keys($data);

$set = '';

foreach ($keyArr as $value){

$set .= $value .'= :'.$value.',';

}

//去除右边的逗号

$set = rtrim($set,',');

//sql语句

$sql = 'UPDATE ' .$this->table .' SET '.$set.' WHERE '.$where;

//预处理

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

$stmt->execute($data);

//            die($stmt->debugDumpParams());

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=php';

$password = 'root';

$username = 'root';

$table = 'staff'; //表名

$db = new sub($dsn,$username,$password,$table);

//导入数据

$data = [

'name'=> '洪吉潮',

'age'=> 18,

'sex' => 1,

'position' => '主席',

'mobile'=> '15626475734',

'hiredate' => time()

];

//增加执行结果

//    $res = $db->create($data);

//    echo '成功新增 '. $res['count']. '条记录, 新增记录ID是: '. $res['id'];

//    echo '


';

//查询执行结果

foreach ($db->read('name,age,position','staff_id>5','5')as $item ){

print_r($item);

echo '
';

}

echo '


';

//更新执行结果

$data = [

'name' => '李文茜'

];

$where = 'staff_id=12';

echo '成功更新'.$db->update($data,$where).'条记录';

echo '


';

//删除执行结果

$where = 'staff_id=11';

echo '成功删除'.$db->delete($where).'条记录';

运行实例 »

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值