毕业设计(论文)-Zend及mvc模式下的电子商务及应用.doc_第1页
毕业设计(论文)-Zend及mvc模式下的电子商务及应用.doc_第2页
毕业设计(论文)-Zend及mvc模式下的电子商务及应用.doc_第3页
毕业设计(论文)-Zend及mvc模式下的电子商务及应用.doc_第4页
毕业设计(论文)-Zend及mvc模式下的电子商务及应用.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州大学毕业设计(论文) 题 目: zend 及 mvc 模式下的电子商务及应用 指导教师: 职称:讲师 学生姓名: 学号: 专 业:计算机网络技术 院(系):郑州大学升达经贸管理学院 完成时间:2011 年 05 月 05 日 2011 年 05 月 05 日 i 摘摘 要要 企业需要更高效能且技术统一的平台,以整合当前的网上业务,同时让本身的系 统能够随时便利升级,以支持未来网上业务的发展。建设集多功能(如客户关系管理、 网上销售、知识管理、内容管理等)于一身的企业门户网站,成为势在必行的上网策略。 本系统的开发恰恰满足了这一要求。说明书中详细介绍了系统的需求分析、总体设计 及各功能模块的详细设计。 php 继承了所有 php 语言的特点,而且发展前景十分的广阔,因此本项目才用 php 语 言作为根本,选用经典的 zend 作为开发架构,在数据持久层方面则使用了 mysql. 本文首先介绍了系统的开发背景、研究现状和意义还有所用到的开发技术。然后 详细讲解了系统的功能模块划分和数据库设计。最后,详细介绍了系统的实现。本系统 主要针对中小型企业的内外部管理,包括以下五大功能模块:新闻管理,订单管理, 产品管理,留言管理,招聘管理。本系统投入运行后,能满足一般中小型企业的管理 需求,是一个能够独立运行的 b/s 公司网站。 关键字关键字 mvc;zend;mysql;php;企业网站 abstract higher performance and technology companies need a unified platform to integrate the current on-line business, while allowing their systems to facilitate the upgrade at any time, in order to support future internet business. construction of multi-set (such as customer relationship management, online sales, knowledge management, content management, etc.) in an enterprise portal strategy has become imperative for the internet. the development of this system precisely meets this requirement. paper details the system requirements analysis, design and the detailed design of modules. php inherits all the characteristics of php language, and broad prospects for development, so this project was to use php language as a fundamental, classic zend selected as the development framework for data persistence layer side in the use of mysql. this paper introduces the system development background, current situation and the significance of which had been used in the development of technology. and then explain in detail the system function model and database design. finally, the details of the system ii implementation. this system is mainly for internal and external management of small and medium enterprises, including the following five modules: information management, order management, product management, message management, recruitment management. the system put into operation, to meet the management needs of small and medium enterprises, is a capable of independent operation of the b / s website. keyword mvc; zend; mysql; php; corporate website i 目 录 abstractabstract.i 1 引引 言言.1 1.1 选题背景介绍.1 1.2 研究现状.1 1.3 本课题研究的意义.2 2 2 可行性分析可行性分析.2 2.1 技术可行性.2 2.1.1 动态网站技术介绍2 2.1.2 程序语言的选择3 2.1.3 语言优势5 2.1.4 操作可行性6 2.2 环境可行性分析.6 2.2.1 软件环境6 2.2.2 硬件环境6 3 需求分析.6 3.1 项目背景.6 3.2 确定参与者7 3.3 编写用例描述.8 4 系统设计系统设计.9 4.1 总体设计9 4.2 数据库设计.10 4.2.1 数据库的需求分析10 4.2.2 数据库e-r图10 4.2.3 数据库表的具体设计11 4.3 详细设计.14 4.4 开发架构.15 4.4.1 软件开发架构的意义15 4.4.2 zend架构简介16 4.4.3 smarty模板简介.19 4.5 数据持久层.19 4.5.1 持久化数据20 4.5.2 持久化技术21 5 系统实现系统实现.23 5.1 数据的访问23 ii 5.2 对页面的控制24 5.3 技术难点25 5.3.1 中文乱码25 5.3.2 图片处理25 5.3.3 安全性26 5.4 技术重点26 总结总结.27 参考文献参考文献.28 致谢致谢.29 1 1 引引 言言 1.1 选题背景介绍 在如今这样一个企业与经济都处于一个高速发展的社会,企业之间的主要 竞争手段已逐渐的向一个有效合理的管理转变,而这正是阻碍国内大部分企业 发展,随着中国加入wto组织的步伐,国内企业逐渐走向多元化,昔日的文件加 人工管理已越越不能满足一个个走向开世界开放式的多元化企业的管理需要, 这就导致一个能够有效组织并统一化管理公司管理网站。一个好的公司网站应 该具有的两方面的作用: (1)对内: (1)可以加强企业内部员工之间的交流 (2)可以简化人事部对企业整体人事的管理 (3)可以更精确地管理员工的财务事宜 (2) 对外: (1)可以提高企业的知名度 (2)可以让外界更了解企业 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深 刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。应用计算机 对员工信息与工作的有效管理具有人工管理所无法比拟的优点.例如:检索迅速、 查找方便、可靠性强、存储量大、保密性能好、交流方便等。这些优点能够极 大地提企业管理的工作质量和效率,也是企业管理的科学化、规范化、信息化管 理的重要条件。 1.2 研究现状 长期以来企业信息管理工作一直是使用传统人工的管理方式,这样的管理 方式存在着:效率低、保密性差,大量的文件和数据难于查找、更新和维护,造 成了办事效率低这样的现状,远远不能适应发展的需要。六十年代初期,计算机 技术就开始应用于数据库的管理,形成了初期的信息系统。但是由于当时计算 机硬件系统较弱,限制了软件系统的发展,信息系统只是简单的数据的集合。 进入七十年代以后,由于计算机硬件和软件技术的飞速发展,尤其是大容量存 储设备硬盘的使用,为空间数据的录入、存储、检索和输出提供了强有力 2 的手段。一些国家先后建立了许多不同专题、不同类型、不同规模的各具特色 的信息管理系统。九十年代至今是信息管理系统的用户时代。一方面,信息管 理系统已成为许多机构必备的工作系统。另一方面,社会对信息管理系统的认 识普遍提高,需求大幅度增加,从而导致信息管理系统应用的扩大与深化,信 息管理系统成为现代社会最基本的服务系统。我国的信息管理系统也是九十年 代初开始快速发展的。经过十余年的发展,我国的数据库管理技术也广泛地应 用到各个领域,并且形成了产业化。 1.3 本课题研究的意义 随着中国加入 wto 组织的步伐经济的国际化,企业的运营已不再是单枪 匹马的个人英雄主义时代,企业要想长期的发展就必需与国际化接轨,这就不 仅要对企业内部员工与数据的有效管理,而更讲究的是合作,企业之间的合作 就必需有一个有效且清晰的平台,一个基于 mvc 的 b/s 公司网站正好可以满 足企业的各方面需要企业内部信息高效合理化管理及与合作伙伴之间的交 流等。 企业管理信息化是提高企业员工工作效率、企业地位与综合竞争力的一个 重要标志,也是企业提高工作效率与经济国际化的一个必不可少的手段。本公 司网站以多数企业内外部信息的实际管理方式及国际化发展的要求为主导并针 对具体企业的实际需求开发,论述了企业内部结构化管理与国际化发展的需求, 探讨了 j2ee 的体系结构及基于 j2ee 的系统设计的实用性、安全性、扩展性 和可靠性,并对已开发成功的系统的特点和功能作了简要的介绍。 2 2 可行性分析可行性分析 2.1 技术可行性 2.1.1 动态网站技术介绍 internet 起源于 20 世纪 60 年代的美国,它在近几年迅速风靡全球,其根本 原因不仅在于她拥有卓越的国际通信功能,更在于它拥有巨大的信息资源.所谓 的 internet 是指由分布在全世界成千上万的计算机网络遵循一定的通讯协议, 并相互联系在一起而形成的国际互连网络,也就是说,internet 是建立和使用这 3 些网络的人群,群体,公司以及各种网络资源的集合体. 随着网络技术的不断发展,单纯的静态页面已经不能满足发展的需要,因为静 态页面是用单纯的 html 语言组成的,它没有交互性.因此,为了满足实际的需要, 许多网页文件扩展名不再只是”htm”,”html”,出现了以”php”,”asp”,” jsp”,”shtml”等为后缀的网页文件,这些都是采用动态网页技术制作出来的. 2.1.2 程序语言的选择 (1 1)cgicgi common gateway interface,通用网关接口).首先,客户端(即 web 浏览器)根据 某资源的 url(uniform resource locator,统一资源定位器)向 web 服务器提出 请求,web 服务器的 http daemon(守护进程)将此请求的参数通过标准输入 stdin 和环境变量传递给指定的 cgi 程序,并启动此应用程序进行处理,如要存 取数据库服务器上数据库的数据,则向数据库服务器发出处理请求,数据库服务 器将执行结果返回给 cgi 程序,cgi 程序处理结果通过标准输出 stdout 返回给 httpdaemon 进程,再由 http daemon 进程返回给客户端,由浏览器解释执行,将 最终结果在用户面前显示.cgi 允许 web 服务器运行外部应用程序,以通过外部 程序来访问数据库等一些外部资源,并产生 html 文档给浏览器.但每次请求 cgi 程序都要重新启动程序,影响了响应的速度,且 cgi 程序不能被多个客户请求共 享,影响了各种资源的使用效率.为了克服 cgi 的这些缺点,一些 web 服务器厂商 开发出了专用的 api(applications program interface 应用程序接口),这样就 允许程序员编写程序来扩展服务器的功能.api 相对于 cgi 与 web 服务器的结合 更加紧密,占用的资源较少,运行的效率大有提高,安全性与保护性更好.但是开 发 api 应用程序比开发 cgi 应用程序复杂得多,要求程序员掌握更多的计算机软 件知识,且各种 api 之间的兼容性不好,业界没有一个统一的标准,使得 api 程序 只能工作在专用的 web 服务器与操作系统之上.编写 cgi 的程序设计语言有许多 种,常用的有 c,perl,visual c+等,由于对程序员的要求较高,且编写与 调试 比其它队编程技术困难,故近年来基于 b/s 的信息系统工程时间中已很少被采用. (2)asp asp 的程序比 html 更方便而更富有灵活性.是在 web 服务器端运行,运行 后再将运行结果以 html 格式传送至客户端的浏览器.因此 asp 与一般的脚本 语言相比要安全得多.asp 最大的好处就是可以包含 html 标签,也可以直接存 4 取数据库及使用无限扩充的 activex 控件,用户可以直接使用 activex 控件,调用 对象方法和属性,以简单的方式实现强大的交互功能.但 asp 技术也并非完美无 缺,由于它基本上是局限于微软的操作系统平台,主要的工作环境是微软的 iis 应 用程序结构,又因 activex 对象具有平台特性,所以 asp 技术要实现在跨平台 web 服务器上工作,不是很容易.microsoft 的 asp 技术目前已发展到.net 版.对 很多人来说,用 asp 来创建 windows 服务器平台上的动态 web 网页,整个站点和 基于 web 的应用程序已经成为及其自然的方法.在浏览器地址栏中,文件扩展名. asp 同表示动态创建的网页的文件扩展名.pl 或.cgi 一样,已被浏览者所接受.开发 asp 程序,常常先设计静态网页的栏目格式和排版形成 html 语言,接着在 html 的基础上添加脚本程序,形成 asp 程序后再实现动态的 web 网页.在 asp 的程序开发中,它所用的脚本语言是 phpscript 和 vbscript,在默认情况下使用的 是 vbscript,它是 vb 程序设计语言的一个子集,语法与 vb 基本相同.asp 中的 ado 对象用来执行与数据库相关的操作,ado 再以 oledb 或 odbc 的方式访 问数据库,在.net 版本中这一对象称为 ado.net. (3 3)phpphp php 即 hypertext preprocessor(超文本预处理器),它是当今 internet 上最为火 热的脚本语言,其语法借鉴了 c,php,perl 等语言,而且只需要很少的编程知识就能 使用 php 建立一个真正交互的 web 站点.它与 html 语言具有非常好的兼容性, 使用者可以直接在脚本代码中加入 html 标签或者在 html 标签中加入脚本 代码从而更好地实现页面控制.php 提供了标准的数据库接口,数据库连接方便, 兼容性更强,扩展性强,可以进行面向对象编程.但是 php 对组件的支持不够,扩展 性差,常用它与免费的数据库系统 mysql 协同一起用来构建中小型网 b/s 应用 大网站或信息系统. (4)jsp jsp(phpserver pages)是由 sun 公司倡导,许多别的公司参与一起创建的一种 新动态网页技术标准,类似其他技术标准.在传统的网页 html 文件(*.htm,*.html)中 加入 php 程序片断(scriptlet)和 jsp 标签,构成了 jsp 网页(*.jsp)servlet/jsp container 收到客户端发出的请求时,首先执行其中的程序片断,软后将执行结果 以 html 格式响应给客户端,其中程序片断可以是:操作数据库,重新定向网页以 及发送 e-mail 等等,这些都是建立动态网站所需要的功能.所有程序操作都在服 务器端运行,网络上传送给客户端的仅是得到的结果,与客户端的浏览器无关,因 5 此,jsp 称为 server-side language.所以被许多人认为是未来最有发展前途的动态 网站技术之一. 经过如上的程序语言的比较,php 功能相对简单,不适合作大程序,而 cgi 效 率相对较低,所以也不考虑,因为该系统并没有原有的基础平台需要扩展,也不需 要与其他系统进行太多的交互,所以使用 j2ee 的模式并不能够体现出 j2ee 本身 的优势,而 jsp 又是 j2ee 的核心技术之一,可以随时升级为 j2ee 程序,这里暂时 不考虑采用 j2ee,这样只需要在 asp 和 jsp 中进行选择.在进行了诸多因素的比 较之后,最终认为目前这个阶段比较合适的是 jsp,而选择 zend 架构作为开发的 主体框架,选用 mysql 作为数据持续性处理层,则是考虑到了其高速的开发效率, 及代码重用性高,易于维护等各种优势.其最终目的是希望提高系统底层业务逻辑 的可重用性,增加系统的可扩展性,降低系统维护成本. 2.1.3 语言优势 (1)将内容的生成和显示进行分离 使用 php 技术,web 页面开发人员可以使用 html 或者 xml 标识来设计和格式 化最终页面.使用 php 标识或者小脚本来生成页面上的动态内容.生成的内容的 逻辑被封装在标识和 phpbeans 组件中,那么其他人,如 web 管理人员和页面设计 者,能够编辑和使用 php 页面而不影响内容的生成. (2)一次编写,到处运行 作为 php 平台的一部分,php 拥有 php 编程语言”一次编写,到处运行”的 特点,随着越来越多的供应商将 php 支持添加到他们的产品中,您可以使用自己 所选择的服务器和工具,但并不影响当前的应用. (3)php 的平台适应性更广 这是 php 比 asp 的优越之处,几乎所有的平台都支持 php,它们可以在任何平 台下通行无阻.虽然 nt 的 os 占据了很大的市场的份额,但在服务器方面 unix 的优势仍然很大.从一个平台移植到另一个平台,php 和 phpbeans 甚至不用重新 编译,因为 php 字节码都是标注的字节码与平台无关. (4)健壮的存储管理和安全性 由于 php 页面的内置脚本语言是基于 php 编程语言的,而且所有的 php 页面 都被编译为 php servlet,php 页面就具有 php 技术的所有优点,包括健壮的存储管 6 理和安全性 (5)数据库连接技术 很多的 os 中都带有 jdbc 驱动程序,php 就通过 jdbc 与数据库连接,执行 查询,提取数据等操作.sun 公司还提供了 jdbc-odbc 的桥连方式,因此 php 也 可以访问带有 odbc 驱动的数据库,目前大多数数据库系统都带有 odbc 驱动, 所以 php 能访问诸如 oracle,sybase,ms sql server 和 access 等类型的数据库. 2.1.4 操作可行性 对于用户来说,本系统只要求使用者掌握一定的上网经验,经过仔细设计和 测试之后的系统具有操作简单,方便灵活等优点,足可以满足各种用户的不同 需求,同时也方便了公司的内部管理。管理人员及用户一定会在短时间内掌握 并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。 2.2 环境可行性分析 2.2.1 软件环境 操作系统:windows/linux/unix 数据库: mysql web 服务器:apache 开发工具:php-eclipse 2.2.2 硬件环境 amd athlon 64 3000+,kingmax pc3200 512mb 2,gainward nv35xt seagate sata 8m 120gb 2 3 需求分析 3.1 项目背景 现在网络的发展已呈现商业化、全民化、全球化的趋势。目前,几乎世界 上所有的公司都在利用网络传递商业信息,进行商业活动,从宣传企业、发布 7 广告、招聘雇员、传递商业文件乃至拓展市场、网上销售等,无所不能。如今 网络已成为企业进行竞争的战略手段。企业经营的多元化拓展,企业规模的进 一步扩大,对于企业的管理、业务扩展、企业品牌形象等提供了更高的要求。 在以信息技术为支撑的新经济条件下,越来越多的企业利用起网络这个有效的 工具。网站早已由论证阶段进入了实质阶段,尤其为企业提供一个展示自己的 舞台、为消费者创造一个了解企业的捷径。公司可以通过建立商业平台,实行 全天候销售服务,借助网络推广企业的形象、宣传企业的产品、发布公司新闻, 同时通过信息反馈使公司更加了解顾客的心理和需求,网站虚拟公司与实体公 司的经营运作有机的结合,将会有利于公司产品销售渠道的拓展,并节省大量 的广告宣传和经营运营成本,更好地把握商机。随着全球信息网络的发展, internet 在世界上已不仅仅是一种技术,更重要的是它已成为一种新的经营模 式。从 4c( connection.,communication ,commerce , co-operation )层 次上彻底改变了人类工作,学习,生活,娱乐的方式,已成为国家经济和区域 经济增长的主要动力。internet 正成为世界最大的公共资料信息库,它包含无 数的信息资源,所有最新的信息都可以通过网络搜索获得。更重要的是,大部 分信息都是免费的,应用电子商务可使企业获得在传统模式下所无法获得的巨 量商业信息,在激烈的市场竞争中领先对手。 3.2 确定参与者确定参与者 参与者是与系统交互的外部实体,既可以是人员也可以是外部系统或硬件 设备为。同此可以确定“公司内部员工” 、 “客户”以及“游客”为该系统的参 与者。 客户 系统管理员 游客 基于 mvc 的 电子商务网站 8 基于 mvc 的电子商务网站的参与者 3.3 编写用例描述编写用例描述 根据已确定的系统参与者及系统用例可以画出该系统的用例图如下: 客户 登录 删除商品 购买商品 更新商品 系统管理员 查看商品 删除用户 游客 9 4 系统设计系统设计 系统设计是在系统分析的基础上由抽象到具体的过程.主要目标是将系统分 析阶段所提出的反映了信息需求的系统逻辑方案转换成可以实施的基于计算机 与通信系统的物理(技术)方案,为下一阶段系统实施提供必要的技术资料,应符 合系统性,灵活性,可靠性,经济性的要求. 4.1 总体设计总体设计 图 4.2 基于 mvc 的电子商务网站功能模块图 电子商务网站 用 户 管 理 产 品 管 理 仓 库 管 理 订 单 管 理 删 除 商 品 添 加 商 品 删 除 用 户 查 看 订 单 查 看 仓 库 商 品 发 布 商 品 删 除 商 品 修 改 商 品 信 息 10 4.2 数据库设计 4.2.1 数据库的需求分析 依据项目的处理需求,对应数据表的设计及功能如下: 管理员信息表: 存放管理员的基本信息 产品明细表: 存放产品的详细信息 推荐商品表: 存放定期推荐的商品 商品发布表: 存放发布商品的信息 订单表: 存放注册信息的订单 用户表: 存放注册用户的基本信息 商品表: 存放商品的基本信息 4.2.2 数据库 e-r 图 (1)局部 e-r 图 数量 交货日 期 类型 小图路径 产品订单 订单 编号产品 名 其他信 息 总价 产品名 浏览数 介绍 大图路径 订购 mn 订单与产品的关系图 11 (2)总体 e-r 图 n m 1 1 n m n 总体 e-r 图 4.2.3 数据库表的具体设计 产品 订单 用户 修改购物 车 商品信息 浏览 查看购 物车信 息 下订单 记录 12 表 4.1 admin : 管理员信息表 表 4.2 category : 产品明细表 表 4.3 goodways : 推荐商品表 表 4.4 inform : 商品发布表 表 4.5 orders : 订单表 13 表 4.6 user : 用户表 表表 4.74.7 goodsgoods : : 商品信息表商品信息表 14 表表 4.84.8 productproduct : : 订单明细表订单明细表 4.3 详细设计 功能设计充分考虑到系统持有公司展示企业形象、扩大知名度的需要.网站 采用了多个动态模块,企业能够自主、独立的完成网站中大多数内容的更新,同 时,设计以展示系统持有公司形象为主,主要体现基于 mvc 的公司网站的整体美 感.增强了企业在访问者心中的亲和力认知度,使系统持有公司的产品为更多的 客户所瞩目.网站内容及结构框架设计上力求体现简捷性与人性化的思想,在功 能设计上配合企业的经营模式、经营思想、发展战略.页面的设计将充分体现系 统持有公司大企业的形象,在框架编排、色彩搭配以及 flash 动画的适当穿插都 做到恰到好处,使整个网站在保证功能的前提下给使用者带来良好的视觉享受和 精神愉悦感.关于网站具体信息请看下面的介绍. 15 网站首页是网站的第一内容页,整个网站的最新、最值得推荐的内容将在这 里展示.以达到整个公司的企业形象的和谐统一;在制作上采用 php 动态页面, 系统可以调用最新的内容在首页显示.在内容上,首页有公司的新闻热点,推荐产 品等信息,并且管理员在后台可以动态更新首页的内容,使整个网站时时充满生 机和活力.在设计上,注重协调各区域的主次关系,以营造高易用性与视觉舒适性 的人机交互界面为终极目标.给浏览者耳目一新的感觉,吸引浏览者经常访问基 于 mvc 的公司网站. 信息列表的模块为基于 mvc 的公司网站的重要部分,详细介绍了公司的产 品.可以浏览全部的产品,可以按产品的分类浏览产品,也可以分别按名称或简介 查找产品.在找到自己理想的产品之后,点击”加入收藏”的链接,就可以增加一张 订单, 在订单中,可以修改定购产品的数量,交货的日期,以及其他的要求等等.然 后在一周,公司的负责人员会打电话联系用户,以确定生产. 另外在后台访问数据库的时用到了 zend. 4.4 开发架构 4.4.1 软件开发架构的意义 对于已经习惯了使用传统的 php 设计方式实现动态网站的程序员,在刚开始 接触 zend 时经常会出现一种困惑:专业书籍和文章中总是使用 zend framework 这种说法,zend 通常也被称为是一种 web 应用开发的架构(framework),那么到底 什么是架构,软件开发架构的意义又是什么呢? 如果将早期的软件开发方式比喻为传统手工业生产方式的话,那么基于软件 开发架构的开发方式则是大型现代化工厂生产方式的体现.虽然二者都能够制作 出产品,但是在生产效率及产品质量的保证上显然会有巨大的差异. 汽车生产厂家在制造一辆汽车时,总是先在各条生产线上制作出不同类型的 零件,最终再由专业的技师在专业的组装生产线上将成百上千的零件组装成一台 完整的汽车,显然,设计者的主要精力并不是用于重复地制造相同的车轮,相同的 方向盘,而是利用现成的车轮组装出一辆辆不同的汽车.同样,开发人员也可以利 用软件架构中提供的组建库(如同已经生产好的规范化的汽车核心零部件库),按 照既定的组装方式将不同的组建应用在软件产品的各个环节,最终开发出一个完 16 整的,高质量的软件产品. 实际上,如果需要,汽车设计者也可以将原有的车轮进行改造,例如涂上不同 的颜色,贴上不同的装饰物等.同理,软件开发人员可以在现有组件的基础上进行 扩展和改进,这实际上充分地实现了软件开发的可扩展性. 组件复用是面向对象编程思想的结晶,而在软件架构的基础上进行开发可以 最大限度地实现组件的复用.在大型,多层结构的软件开发项目中,开发和使用具 有可重用性,可扩展性,经过良好测试的软件组织,可以使开发者从大量繁琐的代 码工作中解脱出来,专注于软件设计和业务逻辑的实现.通常将被验证为有效的, 相同类型问题的解决方案进行抽象,即可提取形成一个应用程序框架,即 framework.每一种 framework 都有自己的一套明确的实现机制,通常在 framework 结构中都会包含一个”命令和控制”组件(“command and control” component),类似于工业生产中的”控制中心”,开发人员通过它可以很容易地控制, 扩充和实现该 framework 上的开发结构. 4.4.2 zend 架构简介 随着 web 开发技术的日益成熟,在 web 开发开发领域中出现了许多设计好的 软件开发框架,zend 就是一种基于 mvc 经典设计模式的框架,也是当前 web 开发 中比较成熟的一种框架. (1) 经典的 mvc 模式 mvc(model-view-controller)模式,即模型-视图-控制器模式,其核心思想 是将整个程序代码分成相对独立而又能协同工作的 3 个组成部分. 模型(model):业务逻辑层.实现具体的业务逻辑,状态管理的功能. 视图(view):表示层.即与用户实现交互的界面,通常实现数据输入和输出功能. 控制器(controller):控制层.起到控制整个业务流程(flow control)的作用, 实现 view 和 model 部分的协同工作. mvc 设计模式可以针对需要为同样的数据提供多个不同视图的应用程序,例 如:公司产品数据库中同样的产品信息数据,但需要根据用户的不同需求在页面 中显示其所需的不同产品信息. mvc 设计模式中,事件一般是指客户端 web 浏览器提交的各种不同请求,这 些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图 17 也可以接受模型发出的数据更新的通知,依据数据更新的结果调整视图效果,呈 现在用户面前.而模型也可以通过视图所获得的用户提交的数据进行具体业务逻 辑的处理. 显然这样的运行机制可以起到分工明确,指责清晰,各尽所长的效果.而在软 件开发的过程中,这样的开发方式无疑可以有效地区分不同的开发者,尽可能减 少彼此之间的互相影响.充分发挥每个开发者的特长.这在开发大型复杂的 web 项目时体现得尤为突出. 图 4.2 mvc 设计模式的结构 (2) zend 1.2 开发框架 作为基于 mvc 设计模式的 web 应用的一种典型体现,zend 架构实际上是建立 在 model2 基础上的,对 model,view 和 controller 都提供了现成的实现组建. i controller 控制器部分 zend 中的 controller 控制器部分是通过专门的 servlet 来实现的,该 servlet 是一个 zend api 中提供的 actionservlet 类型的实例,actionservlet 类继承了 phpx.servlet.http.httpservlet 类,因此该类的实例可以和普通的 servlet 一样工作,其作用是接收客户端浏览器的请求,然后选择执行相应的业 模 型 视图 1视图 2 控制器 事 件 改变改变 改变 更新更新 获得数据获得数 据 18 务逻辑,再把响应结果送回到客户端. action 对象是开发者定义的类(该类必须是 zend api 中提供的 action 类的 子类)的实例.在继承该类的过程中开发者可以加入具体业务逻辑或调用业务逻 辑模块.action 对象在进行了业务逻辑或调用业务逻辑模块.action 对象在进行 了业务逻辑的处理以后会将应用程序流程转到合适的 view 组件,最终将响应送 回浏览器客户端.zend 中提倡 action 对象只用来决定”做什么”,相当于一个 低层面的控制器,因此也可以将 action 归纳为 controller 的组成部分. ii model 模型部分 mvc 系统中的 model 模型部分从概念上可以分为两类:系统的内部状态和改 变系统状态的动作.zend 中的 model 部分一般由 phpbean 以及 ejb 组成.在 zend 架构中使用 phpbean 来提供具体的业务逻辑,即”怎么做”,对于复杂的系统也 可以使用 ejb 等组件来实现系统状态维护.这种业务逻辑的细分可以增强 可以代码的可重用性. iii view 视图部分 zend 中的 view 视图部分依然可以采用 php 来实现.此外,zend 还提供了丰 富的自定义标记库,view 部分使用这些自定义标签同样可以实现与 model 部分 的有效交互并能够增强显示功能. (2) zend 开发环境安装 在 tomcat 安装完成后,即可将 zend 框架工具安装到对应的 web conta 中.可以通过 zend 的二进制发布包安装 zend 框架,具体操作步骤: (1)下载二进制发布版 (2)将下载的 zend 二进制发布包进行解包,将解包目录下的 lib 目录下的所有. jar 文件全部复制到项目目录的 web-inf/lib 下,如果在多个项目中都用到 了 zend,则将上述文件直接复制到 tomcat 目录下的 common/lib 下. (3)将对应的 lib 目录下的 zend.jar 文件添加到环境变量 classpath 中即可. 以上资源可以从 /zend/userguide/index.htm 获得更多关于 zend 安装和相关配置的说明信息. 19 4.4.3 smarty 模板简介 smarty 是一个使用 php 写出来的模板引擎,是目前业界最著名的 php 模板 引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方 法,用来将原本与 html 代码混杂在一起 php 代码逻辑分离。简单的讲,目的就 是要使 php 程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到 前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这 在多人合作的项目中显的尤为重要。 smarty 优点: 1. 速度:采用 smarty 编写的程序可以获得最大速度的提高,这一点是相 对于其它的模板引擎技术而言的。 2. 编译型:采用 smarty 编写的程序在 运行时要编译成一个非模板技术的 php 文件,这个文件采用了 php 与 html 混合 的方式,在下一次访问模板时将 web 请求直接转换到这个文件中,而不再进行 模板重新编译(在源程序没有改动的情况下) 3. 缓存技术:smarty 选用 的一种缓存技术,它可以将用户最终看到的 html 文件缓存成一个静态的 html 页,当设定 smarty 的 cache 属性为 true 时,在 smarty 设定的 cachetime 期内 将用户的 web 请求直接转换到这个静态的 html 文件中来,这相当于调用一个静 态的 html 文件。 4. 插件技术:smarty 可以自定义插件。插件实际就是 一些自定义的函数。 5. 模板中可以使用 if/elseif/else/endif。在模板 文件使用判断语句可以非常方便的对模板进行格式重排。 鉴于 smarty 中的 mvc 架构比 zend 的架构方便,本系统主要用 zend 访问 数据库,用 smarty 构建 mvc 架构. 4.5 数据持久层 数据是软件系统中不可缺少的环节,数据持久化的解决之道也一直是企业计 算标准中最有影响力的部分.如今关系型数据库已经稳定地占据着主要的数据库 市场,xml 技术和 xml 数据库技术也日渐成熟. 20 4.5.1 持久化数据 数据是我们软件开发人员必须考虑的对象.无论你使用哪种技术,借助哪种 工具,以及购买哪种软件平台产品,当接受一个实际的问题时,你都需要面对实际 的数据,考虑实际数据的各种问题.在这些问题中往往都包含数据持久化的问题, 这不仅是因为我们的计算机内存有限,更主要的原是业务逻辑的需要,作为一个 接触软件技术,尝试写程序的人,我们要接触各种类型的数据.下面列举了三种常 见的数据类型: (1) 随机数据 这种数据指的是不确定结构,不了解数量,目前也搞不清关系的数据.它听起 来很奇怪,但在实际的程序设计中十分常见.例如,从一个震动源传递到计算机采 集卡的数据,再比如一个自然物生长过程中的数据.可能有些数据实际上是很有 规律的,但是在设计程序时由于对它的了解很少,使它对于我们来说也成了随即 的数据了.我没曾经在遇到这种搞不大清楚的数据时,使用很大的数组或者多个 链表来表述,不管下一个数据的值是什么,先存储起来再说.有时候当遇到的数据 总也摸不到规律,或者越来越多,内存也容纳不下时,就找个文件存放起来,后来 发现其实存入文件的方式很不错,起码可以一直继续下去.也许这就是最佳的持 久化策略了. (2) 属性数据 在接触具体的项目开发任务时,更多的时候要接触到属性类型的数据,这些 数据来源于对象的属性,当然这些属性之间还存在关系,对于此类数据,似乎最好 的持久化方法就是利用关系型数据库表了,在存入数据表的过程中还可以借助 mysql 来提高开发的效率,或者直接使用 jdbc 来传递 sql 语句.这两种方法有些 相似但还有细微的差别. (3) xml 数据 现在很多网络上的应用程序都使用 xml 类型的数据,或者说是一种树状的 数据,如何将这两种数据持久化保存下来呢?一种方法是将 xml 数据拆分为属性 数据,然后存储到关系型数据库中.另一种方式比较新,是将 xml 数据存储到 xml 数据库中,在 xml 数据库中存储这种数据时,数据的结构不变,xml 数据在 21 xml 数据库中,在 xml 数据库中以文档对象形式保存,使用 xpaht 和 xquery 查 询语言来查询 xml 数据中的节点数据,或者多个 xml 文档中的多个节点数据. 相对于属性数据而言,xml 数据是很宽松的.首先,xml 数据的结构没有被 确定下来,起码没有被定死为某种僵化的结构.其次,对于 xml 数据的各个节点来 说,数据的类型并没有被确定下来,在 xml 中如果不加特殊的约束(例如 dtd 或 者 schema),xml 文档中的数据和结构可以有十分大的变化空间,在 xml 中以字 符串形式存在的数据,很难确定它的类型是 int 或是 string.最后,xml 是可以被转 换处理的,利用 xslt 可以将 xml 转换成希望的结果.因此可以说对 xml 数据 的约束是比较宽松的,xml 数据类型甚至可以用来模拟实现一些随即性质的数 据. 4.5.2 持久化技术 一直以来,在 php 开发领域中基于数据库应用的设计实现一直是面向关系的, 也就是说与数据库相关的处理过程并没有实现真正的面向对象.如何在数据存取 的操作中实现真正的面向对象,一直是开发人员探索的问题.正在使用中的对象序 列化技术,ejb 中 entity bean 技术等,都是在这方面很好的探索.但是实体 bean 设 计实现过程中的繁琐和复杂,使得许多开发人员望而却步. 而 mysql 的出现,提供了一个符合 php 面向对象编程思想,易于使用的数据库 持久化解决方案.因此,在目前行业的 php 数据库应用项目中,有越来越多的开发 人员开始尝试使用 mysql 在数据库外面包裹上一层面向对象的外衣,从而将开发 人员从繁琐,重复,技术含量不高的数据库编程中结果出来. (1) mysql 概述 mysql 在英文中的意思是”冬眠”,从这个角度也可以体会到 mysql 架构下提 供的相关技术可以实现度十角状态的持久性保存.在传统的数据库编程中,开发人 员要面对大量重复行代码的编写,以实现对不同数据表中的数据的获取,并将获取 到的记录数据封装成对象,在处理完成之后,如果需要进行对象状态的存取,需要 将对象中的数据拆卸成数据库记录中的对应字段的值,然后向数据库中进行存取. 这种工作方式显然没有实现真正意义上的数据存取阶段的面向对象.虽然数 据存取过程中的工作步骤是基本固定的,但是由于操作的数据表中字段列表数据 22 的不同,使得开发人员必须要不厌其烦地书写与相应的实体类对应的封装处理过 程. 而在 mysql 中,类似这种重复性高,工作量大,但是又必须保证高质量完成的 体力活,全部由 mysql 接管过去.这对广大的 php 开发人员无疑是个非常好的消息. mysql 本质上是一个面向 php 开发环境的对象/关系数据库映射工具.在 mysql 之前,开发人员要将面向对象的软件和关系数据库结合在一起,往往会费长 麻烦.而借助 mysql 对象/关系数据库映射技术,可以非常轻松地将以面向对象思 想封装的对像的各个状态数据映射到基于 sql 的关系模型数据结构中去. 图 3.2 mysql 工作示意图 php 应用 hibernate hql 语句 数据库 sql 语句 xml 映射 文件 23 5 系统实现 5.1 数据的访问 本系统实现与数据库的操作用的是 zend 中的 zend_db_adapter 类. zend_db_adapter 是 zendfrmaeword 的数据库抽象层 api. 基于 pdo,可以使 用 zend_db_adapter 连接和处理多种 数据库,包括:microsoft sql server,mysql,sqlite 等.要针对不同的数据库实例化一个 zend_db_adapter 对 象,需要将 adapter 的名字和描述数据库连接的参数数组作为参数,静态调用 zend_db:factory()方法 访问代码如下: require_once zend/db.php; $params = array (host = , username = malory, password = *, dbname = camelot); $db = zend_db:factory(pdo_mysql, $params); 操作数据库主要用到增删改查 增加时用到 insert,lastinsertid 两个关键字 首先创建一个 $db 对象, 然后以“列名“=“数据“的格式格式构造插入数组, 插入数据行具体代码如下: $row = array ( noble_title = king, first_name = arthur, favorite_color = blue, ); 删除和更新跟增加差不多,在这里就不一一举例了. 查找用上面的语句返回一个结果集,这个结果集就是 php 中特有的数据类 型,叫资

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论