封装数据库操作类(优化)|学习笔记

简介: 快速学习封装数据库操作类(优化)

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段封装数据库操作类(优化)】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12683


封装数据库操作类(优化)

 

内容介绍:

一、优化业务类操作简介

二、优化业务类操作代码详解及测试

三、确定类的控制简介

四、确定类的控制详解

 

一、优化业务类操作简介

用户在使用 SQL 类的时候,必须要进行第一步实例化、然后连接认证[调用  connect() ]和实现字符集置( 调用charset() ),才能完成真正的初始化。对于用户而言,这两步是必须做的,但好像又是累赘,用户并不了解这俩步的原因

用户使用 SQL 类希望实例化时就可完成初始化操作,然后就可做业务。

用户实例化 SQL 类就可以直接进行相应的业务处理:所以可以将连接认证、字符集设置在初始化方法中实现(在构造方法中调用激活),用户操作时会比较方便。

原因:因为构造方法会在实例化时,对象自动创建自动调用,所以该方法相当于已经运行,完成后用户之后的操作才有价值

 

二、优化业务类操作代码详解及测试

1.代码

#实现初始化数据库操作

public function _ construct(array $arr = []){

//先进行属性初始化后再进行调用初始化和字符集设置

#初始化:确保用户传入了数据,否则使用默认值

$this->host = $info['host'] ?? 'localhost';

$this->port = $info['port'] ?? '3306';

$this->user = $infg['user'] ?? 'root';

$this->pass = $info['pass'] ?? 'root';

$this->dbname = $info['dbname'] ?? 'db_2';

$this->charset = $info['charset'] ?? 'utf8';

#调用初始化和字符集设置

if(!$this->connect()) return;

$this->charset();

//charset()与 connect() 连接有关,connect() 可能操作结果不正确,而之后需要继续调用,只有连接资源的保证才可使 charset()方法得以运行,所以需要进行判定;如果执行失败返回结果 false ,则 return 打断当前执行,但 return 对构造方法无用,因为对象调用构造方法时,不需要返回值,对象并不会拿取返回值,所以 return 的作用只是打断当前执行(虽然 return 是返回值,但是此处无意义)

}

}

2.测试:

(1)代码:

#接上述代码(类外测试)

$s1 = new SqL();         #使用默认数据库信息

$db =array(

'host' => ' 192.168.0.1',

‘user ' => 'admin”,

‘pass’=>’admin ' ,

‘dbname' => ' T aobao '

);

$s2 = new SqL ($db) ;#使用外部数据库信息

/*$s1- >connect();

$s1->charset();*/

$res = $s1->read_all(‘desc t_40');

#$res = $s1->write("insert  into  t_40  values(null, 'name ','男',18,'classname ')");

echo $s1->errno,$s1->error ;

#echo $s1-> insert_ id();

Var_dump($res) #观察有哪些字段

(2)解析

将下述俩行代码注释:

/*$s1- >connect();

$s1->charset();*/

停止查看 insert

#$res = $s1->write("insert  into  t_40  values(null, 'name ','男',18,'classname ')");

执行观察效果;发现效果相同,说明可以操作

image.png

但是对于用户而言,只是新建了一个对象(new SqL($db)),就可以直接使用$s1->read_all(),所以上述内容在做业务。

用户需要直接做自己的业务,因为初始化完成紧接着就是做业务。

 

三、确定类的控制简介

在学习完内容之后,发现类中有的在外部无用,有的在外部有用,但使用的都是 public,所以需要确定类的控制。

确定类的控制:不需要外部访问的私有,需要外部访问的公有,重要的数据私有化并增加公有的操作方法进行安全控制。

做起来较为复杂,因为那些类需要控制,都应进行业务规范,或者说需要开发人员有足够的经验是否需要公开或私有


四、确定类的代码讲解

#数据库初始化资源私有:不需要外部访问

private $host;

private $port;

private $user;

private $pass;

private $dbname ;

private $charset;

//属性需要私有化,因为都是内部使用,外部不用

private $link;

//连接资源仅限内部跨方法使用

Public $errno;

Public $error;

//需要外部使用,因为外部访问

private function connect(){}

private function charset(){}

//连接认证和字符集设置已经内部(构造方法)调用,完全自由化,不需要外部使用

private function check($sql){}

//SQL 检查属于内部(write(),read(),inset()做支撑)调用,不需要公有

因为在学习的过程中一直测试,无论是增删改查都可完成,所以测试结束之后将测试所写代码删除。SQL 类封装结束。

以后要使用引入该文件,实例化对象,按照所要的数据进行个性化的定制,就可以连接自己的数据库操作了。

然后讲的就是增删改查,受影响的行数,记录,对应的自增长 id。

相关文章
|
2月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
6月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
289 1
|
2月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
216 6
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
631 5
|
5月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
177 4
|
9月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
10月前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
11月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
303 11
|
11月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
1895 1

热门文章

最新文章