




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章PHP项目开发技术《PHP+MySQL动态网站开发》学习目标/Target
掌握PDO扩展的使用方法,能够开启PDO扩展并使用PDO扩展操作数据库。
熟悉MVC设计模式,能够对MVC进行描述。
掌握Smarty模板引擎的使用方法,能够安装和使用Smarty模板引擎。
掌握基于MVC设计模式的框架的创建方法,能够实现框架的创建。
掌握文章管理系统的功能开发,能够根据需求实现每个功能。章节概述/Summary在第10章中学习了面向对象的思想,本章将学习PHP项目开发技术,主要包括使用PDO扩展操作数据库,了解MVC设计模式并创建基于MVC设计模式的框架,使用Smarty模板引擎完成视图与业务逻辑代码的分离,在基于MVC设计模式的框架中完成文章管理系统的开发。目录/Contents11.111.211.3PDO扩展MVC设计模式Smarty模板引擎11.4创建基于MVC设计模式的框架11.5项目实战——文章管理系统PDO扩展11.1
先定一个小目标!掌握开启PDO扩展的方法,能够开启PDO扩展。11.1.1开启PDO扩展PDO扩展为PHP操作数据库定义了一个轻量级的接口,从而让PHP可以用一套相同的接口操作不同的数据库。目前支持的数据库包括Firebird、FreeTDS、MySQL、SQLServer、Oracle、PostgreSQL、SQLite、Sybase等。11.1.1开启PDO扩展PDO扩展支持的每个数据库都对应不同的扩展文件。如果要让PDO扩展支持MySQL数据库,需要修改如下配置:extension=pdo_mysql11.1.1开启PDO扩展
先定一个小目标!掌握PDO扩展的使用方法,能够使用这些方法连接数据库和处理结果集。11.1.2使用PDO扩展PDO扩展提供了PDO类,使用该类能够连接和操作数据库。使用PDO类操作数据库前,需要实例化PDO类,传递连接数据库的参数:语法格式PDO::__construct(
string$dsn, //数据源名称string$username, //用户名(可选参数)
string$password, //密码(可选参数)array$driver_options //包含键值的驱动连接选项(可选参数))11.1.2使用PDO扩展$dsn由PDO驱动程序名称、冒号和PDO驱动程序特有的连接语法组成。连接MySQL数据库,PDO驱动程序名称为mysql,连接语法包括主机名、端口号、数据库名称、字符集等。连接Oracle数据库,PDO驱动程序名称为oci,连接语法只包括数据库名称和字符集。实例化PDO类后会得到PDO对象,通过PDO对象可以完成数据操作。PDO类的常用方法:方法说明PDO::query()执行查询类语句,并返回PDOStatement类对象PDO::exec()执行操作类语句,返回受影响行数PDO::errorCode()获取最后执行的SQL语句的错误代码PDO::errorInfo()获取最后执行的SQL语句的错误信息PDO::lastInsertId()获取最后插入行的ID值11.1.2使用PDO扩展使用PDO类对象的query()方法执行查询类语句后返回的是PDOStatement类对象,该对象主要用于解析结果集。PDOStatement类处理结果集的常用方法:方法说明PDOStatement::fetch()获取结果集中的下一行数据PDOStatement::fetchAll获取结果集中所有的行数据PDOStatement::fetchColumn()获取结果集中的单独一列数据11.1.2使用PDO扩展使用PDO类查询数据并对查询的结果集进行处理:<?php$dsn='mysql:host=localhost;port=3306;dbname=mydb;charset=utf8';
//连接数据库$pdo=newPDO($dsn,'root','123456');if(!$pdo)exit('数据库连接失败!');$sql='SELECT*FROMstudent';$stmt=$pdo->query($sql);if(false===$stmt){
echo'SQL语句执行错误:<br>';echo'错误代码:'.$pdo->errorCode().'<br>';echo'错误原因:'.$pdo->errorInfo()[2];exit;}$data=$stmt->fetchAll(PDO::FETCH_ASSOC);
//查询所有结果使用print_r()函数输出$data的信息:Array(
[0]=>Array([id]=>1[name]=>Tom[mid]=>18)[1]=>Array([id]=>2[name]=>Jack[mid]=>20)[2]=>Array([id]=>3[name]=>Alex[mid]=>16)[3]=>Array([id]=>4[name]=>Andy[mid]=>19))11.1.2使用PDO扩展MVC设计模式11.2
先定一个小目标!熟悉PHP代码的发展历程,能够说出PHP代码发展的3个阶段。11.2.1PHP代码的发展历程PHP代码的发展历程大致可以概括为3个阶段:模板技术阶段将PHP代码与HTML代码进行分离,对于小型项目来说,使用此模式可能会降低开发效率和服务器的解析效率;但对于大型项目来说,使用此模式提高了代码的复用性和可读性,有助于前后端开发者进行代码维护。混编模式阶段将PHP代码嵌入HTML页面中。此模式下服务器的解析效率最高,但是代码复用性最低,可读性和可维护性差。MVC设计模式阶段基于模板技术,进一步将PHP代码的业务逻辑处理部分和数据操作部分分离,独立维护。使用此模式的前期开发效率较低,但此模式能够将各个模块独立管理,提高代码可读性。11.2.1PHP代码的发展历程
先定一个小目标!熟悉MVC设计模式,能够说出MVC设计模式的工作流程。11.2.2MVC设计模式概述MVC是一种软件设计模式。MVC采用了人类分工协作的思维方法,将程序中的功能实现、数据处理和界面显示分离,从而让开发者在开发复杂的应用程序时可以专注于其中的某个方面,进而提高开发效率和项目质量。MVC将软件系统分成了3个核心部件:11.2.2MVC设计模式概述010203负责数据操作模型负责渲染视图视图负责所有的业务处理控制器MVC的工作流程:当用户提交表单时,控制器负责读取用户提交的数据,再向模型发送数据,最后使用视图将处理结果显示给用户11.2.2MVC设计模式概述优化模型,增加模型调用DAO的步骤11.2.2MVC设计模式概述在MVC中,模型是用来操作数据库的,但是每个模型在对数据库进行操作前,都需要获取数据库的连接,实现对数据的增加、删除、修改、查询等操作。在PHP中,可以对这些重复的代码进行封装,并把这部分代码称之为DAO(数据访问对象)。数据访问对象的工作流程:11.3Smarty模板引擎
先定一个小目标!掌握Smarty的安装,能够独立安装Smarty。11.3.1安装Smarty模板引擎Smarty是使用PHP语言开发的模板引擎,具有响应速度快、语句自由、支持插件等特点。Smarty实现了PHP代码与HTML代码的分离,使PHP开发者专注于数据的处理及功能模块的实现,网页设计人员专注于网页的设计与排版工作。11.3.1安装Smarty模板引擎在Smarty官方网站可以下载Smarty安装包,这里选择下载smarty-4.3.2.zip。在C:\web\apache2.4\htdocs目录下创建smarty目录,解压smarty-4.3.2.zip安装包,将解压后的libs目录保存在smarty目录中。libs目录中的文件是Smarty的核心文件,该目录中的文件和目录如下:11.3.1安装Smarty模板引擎名称说明Autoloader.phpSmarty中实现自动载入文件功能的类bootstrap.php实现自动加载Smartydebug.tplSmarty中的提示信息模板文件functions.php辅助函数文件Smarty.class.phpSmarty核心类文件,提供相关方法用于实现Smarty模板引擎的功能plugins自定义插件目录,存放各类自定义插件的目录sysplugins存放系统文件目录
先定一个小目标!掌握Smarty模板引擎的使用方法,能够使用Smarty的语法在模板展示数据。11.3.2使用Smarty模板引擎Smarty的常用指令:指令说明if条件判断foreach循环展示数据include引用其他模板Smarty的常用方法:方法说明assign()向模板页面分配变量display()展示模板fetch()将模板转化为字符串block()定义一个区域块11.3.2使用Smarty模板引擎向模板页面分配变量后,在模板页面中输出变量、数组元素和对象的属性的语法格式:11.3.2使用Smarty模板引擎语法格式{$变量名} //输出变量{$数组名[键名]} //输出数组元素{$对象名.属性名} //输出对象的属性在模板使用if指令和foreach指令的语法格式:11.3.2使用Smarty模板引擎if指令{if条件表达式1}
代码段1{elseif条件表达式2}
代码段2{else}
代码段3{/if}foreach指令{foreach$数组名as$key=>$value}
循环体{/foreach}演示如何使用Smarty查询student数据表的数据,smarty.php文件的示例代码如下:<?phpinclude_once('smarty/libs/Smarty.class.php');$dsn='mysql:host=localhost;port=3306;dbname=mydb;charset=utf8mb4';$pdo=newPDO($dsn,'root','123456');$res=$pdo->query('SELECT*FROMstudent');$data=[];while($row=$res->fetch(PDO::FETCH_ASSOC)){$data[]=['id'=>$row['id'],'name'=>$row['name']];}$smarty=newSmarty();$smarty->assign('data',$data);$smarty->display('student.html');11.3.2使用Smarty模板引擎student.html文件的示例代码如下:<body><tableborder="1"><tr><th>id</th><th>name</th></tr>
{foreach$dataas$v}<tr><td>{$v.id}</td><td>{$}</td></tr>
{/foreach}</table></body>11.3.2使用Smarty模板引擎创建基于MVC设计模式的框架11.4
先定一个小目标!熟悉基于MVC设计模式的框架的功能,能够根据实现思路搭建框架。11.4.1功能分析框架的实现遵循一套设计逻辑。要设计一个框架,首先需要确定框架的功能,然后根据框架的功能梳理出框架的设计思路,最后根据设计思路实现框架。11.4.1功能分析基于MVC设计模式实现的单一入口的框架的实现思路:11.4.1功能分析在入口文件中使用spl_autoload_register()函数实现自动加载类文件。创建公共控制器,封装Smarty模板引擎的相关方法、封装请求成功和失败的相关方法。创建DAO类,使用PDO扩展连接数据库。创建控制器和模型时,分别继承公共控制器和公共模型。创建公共模型,在公共模型中实例化DAO类,实现数据库的初始化等操作。12345基于MVC设计模式的框架的设计思路:11.4.1功能分析
先定一个小目标!掌握基于MVC设计模式的框架的搭建方法,能够实现框架的搭建。11.4.2实现步骤根据框架的结构划分为不同的实现步骤:划分目录结构创建入口文件,实现初始化功能实现控制器的功能实现模型的具体功能实现DAO1234511.4.2实现步骤项目实战——文章管理系统11.5
先定一个小目标!熟悉文章管理系统的功能,能够说出每个页面的功能。11.5.1项目展示11.5.1项目展示后台用户管理分类管理文章管理评论管理前台首页展示用户登录与注册文章展示评论管理后台登录页面:11.5.1项目展示后台首页:11.5.1项目展示分类列表页面:11.5.1项目展示文章列表页面:11.5.1项目展示用户列表页面:11.5.1项目展示评论列表页面:11.5.1项目展示前台首页
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国手写板行业市场调研分析及投资战略咨询报告
- 2025-2030高档服装和鞋类行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030高压复合气瓶行业市场深度调研及发展前景与投资研究报告
- 2025-2030马口铁礼品盒市场发展分析及行业投资战略研究报告
- 2025-2030食用动物用非治疗性抗生素行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030食品pH控制剂行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030非定线旅游行业市场深度调研及发展前景与投资机会研究报告
- 2025-2030防火窗行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030银杏叶茶行业市场发展分析及竞争格局与投资战略研究报告
- 2025-2030钟表行业市场发展分析及前景趋势与投资研究报告
- 魔幻泡泡秀七彩体验馆介绍
- 表面工程学第十二章-表面微细加工技术
- 《阿房宫赋》理解性默写试题与答案
- 聚乙烯塑料袋检验记录新
- 山东大学工程流体力学(杜广生)课件第5章 粘性流体的一维流动
- 员工入职确认单
- 初三优秀学生座谈会通用课件通用PPT课件
- T∕CAGHP 065.2-2019 地质灾害防治工程工程量清单计价规范(试行)
- 园林绿化工程施工组织机构方案
- 室内智能加湿器设计说明
- 发电机整体气密试验的要求
评论
0/150
提交评论