类的自动加载
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).'条记录';
运行实例 »
点击 "运行实例" 按钮查看在线实例