版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP动态网站开发项目教程项目3使用Laravel框架改写会员管理系统任务12
面向对象的程序设计和PDO的使用子任务12.1面向对象的程序设计简介
计算机编程语言分为高级语言和低级语言两类。我们平常比较熟悉的C、C++、C#、Java、Python、PHP等都属于高级语言。而机器语言、汇编语言则属于低级语言。高级语言从编程结构上来区分,又分成两种,第一种是面向过程的程序设计语言,第二种是面向对象的程序设计语言。常见的C语言就是一种面向过程的程序设计语言,而Java语言则是一种面向对象的程序设计语言。PHP既支持面向过程编程,又支持面向对象编程。【知识储备】12.1.1面向对象和面向过程的区别
所谓“面向过程”(Procedure-Oriented,PO),是指完成一件事情,需要把这件事情拆分成几个步骤来依次完成,在编程中,就是要把项目需求拆分成一个个的方法,然后按照一定的顺序,执行这些方法(每个方法也就是一个过程),最终完成整个任务。
所谓“面向对象”(Object-Oriented,OO),是指在完成任务之前,先把事物抽象成对象的概念,再给对象添加一些属性和方法,最后让每个对象执行自己的方法,最终完成整个任务。1.面向对象程序设计中的4个基本概念
在面向对象的程序设计中,有4个基本概念必须了解,那就是类、对象、属性、方法。(1)类。类是面向对象程序设计的基本概念,是一类东西的结构描述,是一种抽象的概念。比如,四脚动物类就是一个抽象的概念,而不是一个具体事物。(2)对象。对象是一类东西的一个具体的实例,是具体的事物。比如,通过四脚动物类实例化出一只猫、一只兔子。对象通过new关键字进行实例化。(3)属性。属性用来描述对象的特征。比如,一个对象“猫”,它的颜色、性别、体重等都是属性。在程序开发中,属性就是在类中定义的变量。属性声明由关键字public、protected或者private开头,后面跟一个普通的变量。属性的变量可以设置初始化的默认值,默认值必须是常量。(4)方法。一般来说,方法就是指对象能够干哪些事,是对象的动作。比如,“猫”这个对象可以抓老鼠,可以跑动。在面向对象的程序设计中,方法就是一个代码片段,并且这个代码片段可以完成某个特定的功能,还可以被重复使用。方法用function定义,这和面向过程编程中的函数是一样的。实际上,在面向过程的程序开发中,function叫作函数,而在面向对象的程序开发中,function则称为方法。2.理解两种不同的编程方式(1)面向过程的编程方式。
面向过程的编程方式就是将解决这个问题的过程拆分成一个个方法,然后按照一定的顺序执行这些方法,当这些方法执行完毕,整个任务也就完成了。回到当前任务,也就是把衣服洗干净了。按照洗衣服的流程,可以设定以下方法。①执行添加衣服方法。②执行添加洗衣液方法。③执行加水方法。④执行洗涤方法。⑤执行脱水方法。
当上述5个方法按照顺序执行完毕,衣服自然就洗好了。(2)面向对象的编程方式。
面向对象的编程方式,就是先设定对象,然后设置属性和方法,最后调用各个对象的方法来完成相应的操作,最终完成任务。①实例化出两个对象“人”“洗衣机”。②给两个对象分别添加方法。其中“人”这个对象的方法有:添加衣服、添加洗衣液、加水。“洗衣机”这个对象的方法有:洗涤、脱水。③执行方法。分别执行“人”的3个方法和“洗衣机”的两个方法,就可以完成洗衣服这个任务。在面向对象的程序设计中,调用方法和属性都是在对象后面添加“.”来实现的。比如,要调用“洗衣机”的“洗涤”这个方法,就可以使用“洗衣机.洗涤”的方式来调用。3.两种不同编程方式的对比(1)面向过程编程的优点:效率高、容易理解、直接分步实施、简单明了。(2)面向过程编程的缺点:耦合度高、扩展性差、不易维护。(3)面向对象编程的优点:耦合度低、易于复用、扩展性强、易于维护。另外,面向对象编程还具有封装、继承、多态等特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。(4)面向对象编程的缺点:效率比面向过程编程低。
一般来说,完成一些简单的项目,可以采用面向过程的程序设计方式。如果是完成一些较为复杂的大型系统,则建议采用面向对象的程序设计方式。面向对象的程序设计方式已经成为编程的一种主流方式。12.1.2面向对象编程的三大特性
面向对象编程具有三大特性:封装、继承、多态。1.封装
所谓封装,就是把客观事物封装成抽象的类,然后对其属性和方法进行封装,这些属性和方法只能在类的内部使用。如果外部的类和方法想要使用类内部封装的属性和方法,则需要授权才可以。这种授权是通过访问控制符来实现的。
PHP中的访问控制符有3种。(1)public:表示全局的、公有的,在本类内部、类外部和子类中都可以正常访问。(2)protected:表示受保护的,只有在本类、子类和父类中才可以访问。(3)private:表示私有的,只有本类内部才可以访问,类外部和子类都不可以访问。图12.1.1
PhpStorm中显示的错误提示图12.1.2
访问私有类时的错误提示信息2.继承
所谓继承,是指允许通过继承原有类的某些特性或全部特性而产生全新的类,原有的类称为父类,产生的新类称为子类或者派生类。子类不仅可以直接继承父类的特性,还可以创建它自己的特性。图12.1.3“::”使用方法的示例程序3.多态
所谓多态,是指同一个对象在不同的情形下(被实例化),可以表现出不同的形态。也就是说,父类中的方法可以在子类进行覆盖和重写,以实现其他不同的需求。子任务12.2PDO的使用12.2.1使用PDO的准备工作
PHP数据对象(PHP
DataObjects,PDO)是一种在PHP中连接数据库的访问接口。PDO与MySQLi曾经被建议用来取代原本PHP中所用的MySQL相关函数,一个重要的原因是基于数据库使用的安全性,因为后者缺少对于SQL注入的防护。PDO和MySQLi都提供了面向对象的API,不过,MySQLi也提供了面向过程的API。PDO与MySQLi相比最大的优势是,PDO支持多种数据库,而MySQLi只支持MySQL数据库。目前,市场上PDO的使用是非常广泛的。
为了使用PDO,首先必须在服务器环境配置中打开PDO扩展。小王同学以第一个项目“会员管理系统”为例,研究怎么使用PDO。他打开小皮面板,找到“网站”中的“会员管理系统”,单击后面的“管理”按钮,再单击“php扩展”,就看到了“pdo_mysql”选项,只要这个选项被选中,也就是前面打了个钩,就表明已经打开了PDO扩展,如图12.2.1所示。图12.2.1
在小皮面板中打开PDO扩展
为了验证PDO扩展是否已经顺利打开,可以在程序中输入phpinfo()并执行,该函数可以显示出PHP的所有相关配置信息,这是排查PHP配置是否出错或漏配置模块的主要方式之一。运行该程序后,浏览器中将显示PHP的所有相关配置信息。在页面中搜索PDO,如果能看到图12.2.2所示的内容,则表明PDO扩展已经成功打开。图12.2.2
通过phpinfo()函数查看PDO配置情况12.2.2使用PDO连接数据库
成功打开PDO扩展后,小王同学就要开始进行实际操作了。第一个任务是连接数据库,并进行测试,以验证PDO是否能正常工作。图12.2.3
PDO连接数据出错时的错误提示信息12.2.3使用PDO查询数据表记录
通过前面的测试,小王同学已经顺利使用PDO连接上了数据库,接下来需要使用PDO来查询数据表记录。
PHPPDO模块中预定义了许多常量,比如以下几个常量。(1)PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组。(2)PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组。(3)PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的结果集列号的数组(也就是同时包含PDO::FETCH_ASSOC和PDO::FETCH_NUM)。(4)PDO::CASE_NATURAL:保留数据库驱动返回的列名大小写(和数据库中的原始列名大小写保持一致)。(5)PDO::CASE_LOWER:强制列名小写。(6)PDO::CASE_UPPER:强制列名大写。12.2.4使用PDO实现数据的增、删、改
PDO中的query()方法不能用于执行insert、update、delete等没有结果集的操作。在执行这类操作时,需要使用PDO的exec()方法,执行成功后将返回受影响的记录数。如果没有受影响的记录,则PDO::exec()将返回0。同样的道理,PDO的exec()方法也不能用于select操作。
使用PDO操作数据库,所用到的SQL语句和前面的操作并没有什么明显的不同,唯一不同的是调用的对象不一样。
12.2.5使用PDOStatement
预处理
小王同学在查看PDO的文档资料时,还发现PDO有一个execute()方法和PDOStatement对象,这就涉及PDO中的预处理语句。要使用预处理,必须使用PDOStatement对象的execute()方法来执行查询语句。为什么叫预处理呢?因为它可以让我们多次调用这条语句,并且可以通过占位符来替换语句中的字段条件。相比直接使用PDO对象的query()方法或者exec()方法,预处理的效率更高。更加重要的一点是,占位符的应用可以有效防止SQL注入攻击。
使用预处理语句需要使用到PDO中的prepare()方法。在预处理语句中,支持在参数中使用占位符。当然,在所有语句中,都只能对数据列的值使用占位符。比如,在查询语句的where子句中将要筛选的列的值用占位符替代,或者在insert语句中将插入列的值使用占位符替代。请看下面的例子,将查询的id值使用占位符“?”替代,然后使用prepare()方法进行SQL语句预处理,最后调用execute()方法,使用数组作为参数,即可完成查询。
execute()的参数是一个array数组,其元素个数需要和占位符的数量保持一致,顺序也需要保持一致。在下面的代码中构建一个SQL查询语句,其中where子句中的id
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁轮扣合同范例
- 改性环氧树脂销售合同范例
- 履带车租赁服务合同范例
- 高中英语教资面试各类题型思路及逐字稿
- 监控机械租赁合同范例
- 私人安店合同范例
- grc构件安装合同范例
- 电梯房子出租合同范例
- 消防基建维修合同范例
- 终身定制合同范例
- 高性能NAS典型创新应用报告 2024
- 储能电池热失控火灾演化机制及防控
- 食品安全考核制度
- 八年级上部编名著阅读《昆虫记》章节概括
- 酬金制物业服务合同协议书
- 文旅局公共文化服务工作总结及工作计划书
- 2024团购合作协议书
- 校园安全事故分析报告
- DZ∕T 0142-2010 航空磁测技术规范(正式版)
- 2023 版《中国近现代史纲要》 课后习题答案
- 河北开放大学2024年《组织工作实务》形考作业1-4试题
评论
0/150
提交评论