畢業(yè)設(shè)計(jì)(論文)Zend及mvc模式下的電子商務(wù)及應(yīng)用_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)Zend及mvc模式下的電子商務(wù)及應(yīng)用_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)Zend及mvc模式下的電子商務(wù)及應(yīng)用_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)Zend及mvc模式下的電子商務(wù)及應(yīng)用_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)Zend及mvc模式下的電子商務(wù)及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 鄭州大學(xué)畢業(yè)設(shè)計(jì)(論文)題 目: zend 及 mvc 模式下的電子商務(wù)及應(yīng)用 指導(dǎo)教師: 職稱:講師 學(xué)生姓名: 學(xué)號(hào): 專 業(yè):計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) 院(系):鄭州大學(xué)升達(dá)經(jīng)貿(mào)管理學(xué)院 完成時(shí)間:2011 年 05 月 05 日 2011 年 05 月 05 日 i摘摘 要要企業(yè)需要更高效能且技術(shù)統(tǒng)一的平臺(tái),以整合當(dāng)前的網(wǎng)上業(yè)務(wù),同時(shí)讓本身的系統(tǒng)能夠隨時(shí)便利升級(jí),以支持未來(lái)網(wǎng)上業(yè)務(wù)的發(fā)展。建設(shè)集多功能(如客戶關(guān)系管理、網(wǎng)上銷(xiāo)售、知識(shí)管理、內(nèi)容管理等)于一身的企業(yè)門(mén)戶網(wǎng)站,成為勢(shì)在必行的上網(wǎng)策略。本系統(tǒng)的開(kāi)發(fā)恰恰滿足了這一要求。說(shuō)明書(shū)中詳細(xì)介紹了系統(tǒng)的需求分析、總體設(shè)計(jì)及各功能模塊的詳細(xì)設(shè)計(jì)。p

2、hp 繼承了所有 php 語(yǔ)言的特點(diǎn),而且發(fā)展前景十分的廣闊,因此本項(xiàng)目才用 php 語(yǔ)言作為根本,選用經(jīng)典的 zend 作為開(kāi)發(fā)架構(gòu),在數(shù)據(jù)持久層方面則使用了 mysql.本文首先介紹了系統(tǒng)的開(kāi)發(fā)背景、研究現(xiàn)狀和意義還有所用到的開(kāi)發(fā)技術(shù)。然后詳細(xì)講解了系統(tǒng)的功能模塊劃分和數(shù)據(jù)庫(kù)設(shè)計(jì)。最后,詳細(xì)介紹了系統(tǒng)的實(shí)現(xiàn)。本系統(tǒng)主要針對(duì)中小型企業(yè)的內(nèi)外部管理,包括以下五大功能模塊:新聞管理,訂單管理,產(chǎn)品管理,留言管理,招聘管理。本系統(tǒng)投入運(yùn)行后,能滿足一般中小型企業(yè)的管理需求,是一個(gè)能夠獨(dú)立運(yùn)行的 b/s 公司網(wǎng)站。關(guān)鍵字關(guān)鍵字 mvc;zend;mysql;php;企業(yè)網(wǎng)站abstract high

3、er 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 sal

4、es, 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 th

5、e 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 s

6、ituation 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 iiimplementation. this system is mainly for internal and external management of small and medium enterpr

7、ises, 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 websit

8、e. keyword mvc; zend; mysql; php; corporate website i目 錄abstractabstract.i1 引引 言言.11.1 選題背景介紹.11.2 研究現(xiàn)狀.11.3 本課題研究的意義.22 2 可行性分析可行性分析.22.1 技術(shù)可行性.22.1.1 動(dòng)態(tài)網(wǎng)站技術(shù)介紹.22.1.2 程序語(yǔ)言的選擇.32.1.3 語(yǔ)言優(yōu)勢(shì).52.1.4 操作可行性.62.2 環(huán)境可行性分析.62.2.1 軟件環(huán)境.62.2.2 硬件環(huán)境.63 需求分析.63.1 項(xiàng)目背景.63.2 確定參與者.73.3 編寫(xiě)用例描述.84 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì).94.1 總體設(shè)計(jì)

9、.94.2 數(shù)據(jù)庫(kù)設(shè)計(jì).104.2.1 數(shù)據(jù)庫(kù)的需求分析.104.2.2 數(shù)據(jù)庫(kù)e-r圖.104.2.3 數(shù)據(jù)庫(kù)表的具體設(shè)計(jì).114.3 詳細(xì)設(shè)計(jì).144.4 開(kāi)發(fā)架構(gòu).154.4.1 軟件開(kāi)發(fā)架構(gòu)的意義.154.4.2 zend架構(gòu)簡(jiǎn)介.164.4.3 smarty模板簡(jiǎn)介.194.5 數(shù)據(jù)持久層.194.5.1 持久化數(shù)據(jù).204.5.2 持久化技術(shù).215 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn).235.1 數(shù)據(jù)的訪問(wèn).23 ii5.2 對(duì)頁(yè)面的控制.245.3 技術(shù)難點(diǎn).255.3.1 中文亂碼.255.3.2 圖片處理.255.3.3 安全性.265.4 技術(shù)重點(diǎn).26總結(jié)總結(jié).27參考文獻(xiàn)參考文獻(xiàn).28

10、致謝致謝.29 11 引引 言言1.1 選題背景介紹 在如今這樣一個(gè)企業(yè)與經(jīng)濟(jì)都處于一個(gè)高速發(fā)展的社會(huì),企業(yè)之間的主要競(jìng)爭(zhēng)手段已逐漸的向一個(gè)有效合理的管理轉(zhuǎn)變,而這正是阻礙國(guó)內(nèi)大部分企業(yè)發(fā)展,隨著中國(guó)加入wto組織的步伐,國(guó)內(nèi)企業(yè)逐漸走向多元化,昔日的文件加人工管理已越越不能滿足一個(gè)個(gè)走向開(kāi)世界開(kāi)放式的多元化企業(yè)的管理需要,這就導(dǎo)致一個(gè)能夠有效組織并統(tǒng)一化管理公司管理網(wǎng)站。一個(gè)好的公司網(wǎng)站應(yīng)該具有的兩方面的作用: (1)對(duì)內(nèi):(1)可以加強(qiáng)企業(yè)內(nèi)部員工之間的交流(2)可以簡(jiǎn)化人事部對(duì)企業(yè)整體人事的管理(3)可以更精確地管理員工的財(cái)務(wù)事宜(2) 對(duì)外: (1)可以提高企業(yè)的知名度 (2)可以讓外

11、界更了解企業(yè) 隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。應(yīng)用計(jì)算機(jī)對(duì)員工信息與工作的有效管理具有人工管理所無(wú)法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性強(qiáng)、存儲(chǔ)量大、保密性能好、交流方便等。這些優(yōu)點(diǎn)能夠極大地提企業(yè)管理的工作質(zhì)量和效率,也是企業(yè)管理的科學(xué)化、規(guī)范化、信息化管理的重要條件。1.2 研究現(xiàn)狀 長(zhǎng)期以來(lái)企業(yè)信息管理工作一直是使用傳統(tǒng)人工的管理方式,這樣的管理方式存在著:效率低、保密性差,大量的文件和數(shù)據(jù)難于查找、更新和維護(hù),造成了辦事效率低這樣的現(xiàn)狀,遠(yuǎn)遠(yuǎn)不能適應(yīng)發(fā)展的需要。六十年代初期,計(jì)算機(jī)技術(shù)

12、就開(kāi)始應(yīng)用于數(shù)據(jù)庫(kù)的管理,形成了初期的信息系統(tǒng)。但是由于當(dāng)時(shí)計(jì)算機(jī)硬件系統(tǒng)較弱,限制了軟件系統(tǒng)的發(fā)展,信息系統(tǒng)只是簡(jiǎn)單的數(shù)據(jù)的集合。進(jìn)入七十年代以后,由于計(jì)算機(jī)硬件和軟件技術(shù)的飛速發(fā)展,尤其是大容量存儲(chǔ)設(shè)備硬盤(pán)的使用,為空間數(shù)據(jù)的錄入、存儲(chǔ)、檢索和輸出提供了強(qiáng)有力 2的手段。一些國(guó)家先后建立了許多不同專題、不同類(lèi)型、不同規(guī)模的各具特色的信息管理系統(tǒng)。九十年代至今是信息管理系統(tǒng)的用戶時(shí)代。一方面,信息管理系統(tǒng)已成為許多機(jī)構(gòu)必備的工作系統(tǒng)。另一方面,社會(huì)對(duì)信息管理系統(tǒng)的認(rèn)識(shí)普遍提高,需求大幅度增加,從而導(dǎo)致信息管理系統(tǒng)應(yīng)用的擴(kuò)大與深化,信息管理系統(tǒng)成為現(xiàn)代社會(huì)最基本的服務(wù)系統(tǒng)。我國(guó)的信息管理系統(tǒng)也

13、是九十年代初開(kāi)始快速發(fā)展的。經(jīng)過(guò)十余年的發(fā)展,我國(guó)的數(shù)據(jù)庫(kù)管理技術(shù)也廣泛地應(yīng)用到各個(gè)領(lǐng)域,并且形成了產(chǎn)業(yè)化。1.3 本課題研究的意義 隨著中國(guó)加入 wto 組織的步伐經(jīng)濟(jì)的國(guó)際化,企業(yè)的運(yùn)營(yíng)已不再是單槍匹馬的個(gè)人英雄主義時(shí)代,企業(yè)要想長(zhǎng)期的發(fā)展就必需與國(guó)際化接軌,這就不僅要對(duì)企業(yè)內(nèi)部員工與數(shù)據(jù)的有效管理,而更講究的是合作,企業(yè)之間的合作就必需有一個(gè)有效且清晰的平臺(tái),一個(gè)基于 mvc 的 b/s 公司網(wǎng)站正好可以滿足企業(yè)的各方面需要企業(yè)內(nèi)部信息高效合理化管理及與合作伙伴之間的交流等。 企業(yè)管理信息化是提高企業(yè)員工工作效率、企業(yè)地位與綜合競(jìng)爭(zhēng)力的一個(gè)重要標(biāo)志,也是企業(yè)提高工作效率與經(jīng)濟(jì)國(guó)際化的一個(gè)

14、必不可少的手段。本公司網(wǎng)站以多數(shù)企業(yè)內(nèi)外部信息的實(shí)際管理方式及國(guó)際化發(fā)展的要求為主導(dǎo)并針對(duì)具體企業(yè)的實(shí)際需求開(kāi)發(fā),論述了企業(yè)內(nèi)部結(jié)構(gòu)化管理與國(guó)際化發(fā)展的需求,探討了 j2ee 的體系結(jié)構(gòu)及基于 j2ee 的系統(tǒng)設(shè)計(jì)的實(shí)用性、安全性、擴(kuò)展性和可靠性,并對(duì)已開(kāi)發(fā)成功的系統(tǒng)的特點(diǎn)和功能作了簡(jiǎn)要的介紹。2 2 可行性分析可行性分析2.1 技術(shù)可行性2.1.1 動(dòng)態(tài)網(wǎng)站技術(shù)介紹 internet 起源于 20 世紀(jì) 60 年代的美國(guó),它在近幾年迅速風(fēng)靡全球,其根本原因不僅在于她擁有卓越的國(guó)際通信功能,更在于它擁有巨大的信息資源.所謂的 internet 是指由分布在全世界成千上萬(wàn)的計(jì)算機(jī)網(wǎng)絡(luò)遵循一定的通

15、訊協(xié)議,并相互聯(lián)系在一起而形成的國(guó)際互連網(wǎng)絡(luò),也就是說(shuō),internet 是建立和使用這 3些網(wǎng)絡(luò)的人群,群體,公司以及各種網(wǎng)絡(luò)資源的集合體. 隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,單純的靜態(tài)頁(yè)面已經(jīng)不能滿足發(fā)展的需要,因?yàn)殪o態(tài)頁(yè)面是用單純的 html 語(yǔ)言組成的,它沒(méi)有交互性.因此,為了滿足實(shí)際的需要,許多網(wǎng)頁(yè)文件擴(kuò)展名不再只是”htm”,”html”,出現(xiàn)了以”php”,”asp”,”jsp”,”shtml”等為后綴的網(wǎng)頁(yè)文件,這些都是采用動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)制作出來(lái)的.2.1.2 程序語(yǔ)言的選擇 (1 1)cgicgicommon gateway interface,通用網(wǎng)關(guān)接口).首先,客戶端(即 web

16、瀏覽器)根據(jù)某資源的 url(uniform resource locator,統(tǒng)一資源定位器)向 web 服務(wù)器提出請(qǐng)求,web 服務(wù)器的 http daemon(守護(hù)進(jìn)程)將此請(qǐng)求的參數(shù)通過(guò)標(biāo)準(zhǔn)輸入stdin 和環(huán)境變量傳遞給指定的 cgi 程序,并啟動(dòng)此應(yīng)用程序進(jìn)行處理,如要存取數(shù)據(jù)庫(kù)服務(wù)器上數(shù)據(jù)庫(kù)的數(shù)據(jù),則向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出處理請(qǐng)求,數(shù)據(jù)庫(kù)服務(wù)器將執(zhí)行結(jié)果返回給 cgi 程序,cgi 程序處理結(jié)果通過(guò)標(biāo)準(zhǔn)輸出 stdout 返回給httpdaemon 進(jìn)程,再由 http daemon 進(jìn)程返回給客戶端,由瀏覽器解釋執(zhí)行,將最終結(jié)果在用戶面前顯示.cgi 允許 web 服務(wù)器運(yùn)行外部應(yīng)

17、用程序,以通過(guò)外部程序來(lái)訪問(wèn)數(shù)據(jù)庫(kù)等一些外部資源,并產(chǎn)生 html 文檔給瀏覽器.但每次請(qǐng)求 cgi程序都要重新啟動(dòng)程序,影響了響應(yīng)的速度,且 cgi 程序不能被多個(gè)客戶請(qǐng)求共享,影響了各種資源的使用效率.為了克服 cgi 的這些缺點(diǎn),一些 web 服務(wù)器廠商開(kāi)發(fā)出了專用的 api(applications program interface 應(yīng)用程序接口),這樣就允許程序員編寫(xiě)程序來(lái)擴(kuò)展服務(wù)器的功能.api 相對(duì)于 cgi 與 web 服務(wù)器的結(jié)合更加緊密,占用的資源較少,運(yùn)行的效率大有提高,安全性與保護(hù)性更好.但是開(kāi)發(fā) api 應(yīng)用程序比開(kāi)發(fā) cgi 應(yīng)用程序復(fù)雜得多,要求程序員掌握更多的

18、計(jì)算機(jī)軟件知識(shí),且各種 api 之間的兼容性不好,業(yè)界沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),使得 api 程序只能工作在專用的 web 服務(wù)器與操作系統(tǒng)之上.編寫(xiě) cgi 的程序設(shè)計(jì)語(yǔ)言有許多種,常用的有 c,perl,visual c+等,由于對(duì)程序員的要求較高,且編寫(xiě)與 調(diào)試比其它隊(duì)編程技術(shù)困難,故近年來(lái)基于 b/s 的信息系統(tǒng)工程時(shí)間中已很少被采用.(2)aspasp 的程序比 html 更方便而更富有靈活性.是在 web 服務(wù)器端運(yùn)行,運(yùn)行后再將運(yùn)行結(jié)果以 html 格式傳送至客戶端的瀏覽器.因此 asp 與一般的腳本語(yǔ)言相比要安全得多.asp 最大的好處就是可以包含 html 標(biāo)簽,也可以直接存 4取

19、數(shù)據(jù)庫(kù)及使用無(wú)限擴(kuò)充的 activex 控件,用戶可以直接使用 activex 控件,調(diào)用對(duì)象方法和屬性,以簡(jiǎn)單的方式實(shí)現(xiàn)強(qiáng)大的交互功能.但 asp 技術(shù)也并非完美無(wú)缺,由于它基本上是局限于微軟的操作系統(tǒng)平臺(tái),主要的工作環(huán)境是微軟的 iis 應(yīng)用程序結(jié)構(gòu),又因 activex 對(duì)象具有平臺(tái)特性,所以 asp 技術(shù)要實(shí)現(xiàn)在跨平臺(tái)web 服務(wù)器上工作,不是很容易.microsoft 的 asp 技術(shù)目前已發(fā)展到.net 版.對(duì)很多人來(lái)說(shuō),用 asp 來(lái)創(chuàng)建 windows 服務(wù)器平臺(tái)上的動(dòng)態(tài) web 網(wǎng)頁(yè),整個(gè)站點(diǎn)和基于 web 的應(yīng)用程序已經(jīng)成為及其自然的方法.在瀏覽器地址欄中,文件擴(kuò)展名.as

20、p 同表示動(dòng)態(tài)創(chuàng)建的網(wǎng)頁(yè)的文件擴(kuò)展名.pl 或.cgi 一樣,已被瀏覽者所接受.開(kāi)發(fā)asp 程序,常常先設(shè)計(jì)靜態(tài)網(wǎng)頁(yè)的欄目格式和排版形成 html 語(yǔ)言,接著在html 的基礎(chǔ)上添加腳本程序,形成 asp 程序后再實(shí)現(xiàn)動(dòng)態(tài)的 web 網(wǎng)頁(yè).在 asp的程序開(kāi)發(fā)中,它所用的腳本語(yǔ)言是 phpscript 和 vbscript,在默認(rèn)情況下使用的是 vbscript,它是 vb 程序設(shè)計(jì)語(yǔ)言的一個(gè)子集,語(yǔ)法與 vb 基本相同.asp 中的ado 對(duì)象用來(lái)執(zhí)行與數(shù)據(jù)庫(kù)相關(guān)的操作,ado 再以 oledb 或 odbc 的方式訪問(wèn)數(shù)據(jù)庫(kù),在.net 版本中這一對(duì)象稱為 ado.net.(3 3)php

21、php php 即 hypertext preprocessor(超文本預(yù)處理器),它是當(dāng)今 internet 上最為火熱的腳本語(yǔ)言,其語(yǔ)法借鑒了 c,php,perl 等語(yǔ)言,而且只需要很少的編程知識(shí)就能使用 php 建立一個(gè)真正交互的 web 站點(diǎn).它與 html 語(yǔ)言具有非常好的兼容性,使用者可以直接在腳本代碼中加入 html 標(biāo)簽或者在 html 標(biāo)簽中加入腳本代碼從而更好地實(shí)現(xiàn)頁(yè)面控制.php 提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)接口,數(shù)據(jù)庫(kù)連接方便,兼容性更強(qiáng),擴(kuò)展性強(qiáng),可以進(jìn)行面向?qū)ο缶幊?但是 php 對(duì)組件的支持不夠,擴(kuò)展性差,常用它與免費(fèi)的數(shù)據(jù)庫(kù)系統(tǒng) mysql 協(xié)同一起用來(lái)構(gòu)建中小型網(wǎng) b

22、/s 應(yīng)用大網(wǎng)站或信息系統(tǒng).(4)jsp jsp(phpserver pages)是由 sun 公司倡導(dǎo),許多別的公司參與一起創(chuàng)建的一種新動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),類(lèi)似其他技術(shù)標(biāo)準(zhǔn).在傳統(tǒng)的網(wǎng)頁(yè) html 文件(*.htm,*.html)中加入 php 程序片斷(scriptlet)和 jsp 標(biāo)簽,構(gòu)成了 jsp 網(wǎng)頁(yè)(*.jsp)servlet/jsp container 收到客戶端發(fā)出的請(qǐng)求時(shí),首先執(zhí)行其中的程序片斷,軟后將執(zhí)行結(jié)果以 html 格式響應(yīng)給客戶端,其中程序片斷可以是:操作數(shù)據(jù)庫(kù),重新定向網(wǎng)頁(yè)以及發(fā)送 e-mail 等等,這些都是建立動(dòng)態(tài)網(wǎng)站所需要的功能.所有程序操作都在服務(wù)器端運(yùn)

23、行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,與客戶端的瀏覽器無(wú)關(guān),因 5此,jsp 稱為 server-side language.所以被許多人認(rèn)為是未來(lái)最有發(fā)展前途的動(dòng)態(tài)網(wǎng)站技術(shù)之一. 經(jīng)過(guò)如上的程序語(yǔ)言的比較,php 功能相對(duì)簡(jiǎn)單,不適合作大程序,而 cgi 效率相對(duì)較低,所以也不考慮,因?yàn)樵撓到y(tǒng)并沒(méi)有原有的基礎(chǔ)平臺(tái)需要擴(kuò)展,也不需要與其他系統(tǒng)進(jìn)行太多的交互,所以使用 j2ee 的模式并不能夠體現(xiàn)出 j2ee 本身的優(yōu)勢(shì),而 jsp 又是 j2ee 的核心技術(shù)之一,可以隨時(shí)升級(jí)為 j2ee 程序,這里暫時(shí)不考慮采用 j2ee,這樣只需要在 asp 和 jsp 中進(jìn)行選擇.在進(jìn)行了諸多因素的比較

24、之后,最終認(rèn)為目前這個(gè)階段比較合適的是 jsp,而選擇 zend 架構(gòu)作為開(kāi)發(fā)的主體框架,選用 mysql 作為數(shù)據(jù)持續(xù)性處理層,則是考慮到了其高速的開(kāi)發(fā)效率,及代碼重用性高,易于維護(hù)等各種優(yōu)勢(shì).其最終目的是希望提高系統(tǒng)底層業(yè)務(wù)邏輯的可重用性,增加系統(tǒng)的可擴(kuò)展性,降低系統(tǒng)維護(hù)成本.2.1.3 語(yǔ)言優(yōu)勢(shì)(1)將內(nèi)容的生成和顯示進(jìn)行分離 使用 php 技術(shù),web 頁(yè)面開(kāi)發(fā)人員可以使用 html 或者 xml 標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面.使用 php 標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容.生成的內(nèi)容的邏輯被封裝在標(biāo)識(shí)和 phpbeans 組件中,那么其他人,如 web 管理人員和頁(yè)面設(shè)計(jì)者,能夠編

25、輯和使用 php 頁(yè)面而不影響內(nèi)容的生成.(2)一次編寫(xiě),到處運(yùn)行 作為 php 平臺(tái)的一部分,php 擁有 php 編程語(yǔ)言”一次編寫(xiě),到處運(yùn)行”的特點(diǎn),隨著越來(lái)越多的供應(yīng)商將 php 支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,但并不影響當(dāng)前的應(yīng)用.(3)php 的平臺(tái)適應(yīng)性更廣 這是 php 比 asp 的優(yōu)越之處,幾乎所有的平臺(tái)都支持 php,它們可以在任何平臺(tái)下通行無(wú)阻.雖然 nt 的 os 占據(jù)了很大的市場(chǎng)的份額,但在服務(wù)器方面 unix的優(yōu)勢(shì)仍然很大.從一個(gè)平臺(tái)移植到另一個(gè)平臺(tái),php 和 phpbeans 甚至不用重新編譯,因?yàn)?php 字節(jié)碼都是標(biāo)注的字節(jié)碼與

26、平臺(tái)無(wú)關(guān). (4)健壯的存儲(chǔ)管理和安全性 由于 php 頁(yè)面的內(nèi)置腳本語(yǔ)言是基于 php 編程語(yǔ)言的,而且所有的 php 頁(yè)面都被編譯為 php servlet,php 頁(yè)面就具有 php 技術(shù)的所有優(yōu)點(diǎn),包括健壯的存儲(chǔ)管 6理和安全性(5)數(shù)據(jù)庫(kù)連接技術(shù) 很多的 os 中都帶有 jdbc 驅(qū)動(dòng)程序,php 就通過(guò) jdbc 與數(shù)據(jù)庫(kù)連接,執(zhí)行查詢,提取數(shù)據(jù)等操作.sun 公司還提供了 jdbc-odbc 的橋連方式,因此 php 也可以訪問(wèn)帶有 odbc 驅(qū)動(dòng)的數(shù)據(jù)庫(kù),目前大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)都帶有 odbc 驅(qū)動(dòng),所以 php 能訪問(wèn)諸如 oracle,sybase,ms sql server

27、 和 access 等類(lèi)型的數(shù)據(jù)庫(kù).2.1.4 操作可行性 對(duì)于用戶來(lái)說(shuō),本系統(tǒng)只要求使用者掌握一定的上網(wǎng)經(jīng)驗(yàn),經(jīng)過(guò)仔細(xì)設(shè)計(jì)和測(cè)試之后的系統(tǒng)具有操作簡(jiǎn)單,方便靈活等優(yōu)點(diǎn),足可以滿足各種用戶的不同需求,同時(shí)也方便了公司的內(nèi)部管理。管理人員及用戶一定會(huì)在短時(shí)間內(nèi)掌握并熟練使用。只要?jiǎng)右粍?dòng)鼠標(biāo)鍵盤(pán)就可以達(dá)到想要的效果。2.2 環(huán)境可行性分析2.2.1 軟件環(huán)境操作系統(tǒng):windows/linux/unix數(shù)據(jù)庫(kù): mysqlweb 服務(wù)器:apache開(kāi)發(fā)工具:php-eclipse2.2.2 硬件環(huán)境amd athlon 64 3000+,kingmax pc3200 512mb 2,gainwa

28、rd nv35xtseagate sata 8m 120gb 23 需求分析3.1 項(xiàng)目背景現(xiàn)在網(wǎng)絡(luò)的發(fā)展已呈現(xiàn)商業(yè)化、全民化、全球化的趨勢(shì)。目前,幾乎世界上所有的公司都在利用網(wǎng)絡(luò)傳遞商業(yè)信息,進(jìn)行商業(yè)活動(dòng),從宣傳企業(yè)、發(fā)布 7廣告、招聘雇員、傳遞商業(yè)文件乃至拓展市場(chǎng)、網(wǎng)上銷(xiāo)售等,無(wú)所不能。如今網(wǎng)絡(luò)已成為企業(yè)進(jìn)行競(jìng)爭(zhēng)的戰(zhàn)略手段。企業(yè)經(jīng)營(yíng)的多元化拓展,企業(yè)規(guī)模的進(jìn)一步擴(kuò)大,對(duì)于企業(yè)的管理、業(yè)務(wù)擴(kuò)展、企業(yè)品牌形象等提供了更高的要求。在以信息技術(shù)為支撐的新經(jīng)濟(jì)條件下,越來(lái)越多的企業(yè)利用起網(wǎng)絡(luò)這個(gè)有效的工具。網(wǎng)站早已由論證階段進(jìn)入了實(shí)質(zhì)階段,尤其為企業(yè)提供一個(gè)展示自己的舞臺(tái)、為消費(fèi)者創(chuàng)造一個(gè)了解企業(yè)的

29、捷徑。公司可以通過(guò)建立商業(yè)平臺(tái),實(shí)行全天候銷(xiāo)售服務(wù),借助網(wǎng)絡(luò)推廣企業(yè)的形象、宣傳企業(yè)的產(chǎn)品、發(fā)布公司新聞,同時(shí)通過(guò)信息反饋使公司更加了解顧客的心理和需求,網(wǎng)站虛擬公司與實(shí)體公司的經(jīng)營(yíng)運(yùn)作有機(jī)的結(jié)合,將會(huì)有利于公司產(chǎn)品銷(xiāo)售渠道的拓展,并節(jié)省大量的廣告宣傳和經(jīng)營(yíng)運(yùn)營(yíng)成本,更好地把握商機(jī)。隨著全球信息網(wǎng)絡(luò)的發(fā)展,internet 在世界上已不僅僅是一種技術(shù),更重要的是它已成為一種新的經(jīng)營(yíng)模式。從 4c( connection.,communication ,commerce , co-operation )層次上徹底改變了人類(lèi)工作,學(xué)習(xí),生活,娛樂(lè)的方式,已成為國(guó)家經(jīng)濟(jì)和區(qū)域經(jīng)濟(jì)增長(zhǎng)的主要?jiǎng)恿Αn

30、ternet 正成為世界最大的公共資料信息庫(kù),它包含無(wú)數(shù)的信息資源,所有最新的信息都可以通過(guò)網(wǎng)絡(luò)搜索獲得。更重要的是,大部分信息都是免費(fèi)的,應(yīng)用電子商務(wù)可使企業(yè)獲得在傳統(tǒng)模式下所無(wú)法獲得的巨量商業(yè)信息,在激烈的市場(chǎng)競(jìng)爭(zhēng)中領(lǐng)先對(duì)手。3.2 確定參與者確定參與者參與者是與系統(tǒng)交互的外部實(shí)體,既可以是人員也可以是外部系統(tǒng)或硬件設(shè)備為。同此可以確定“公司內(nèi)部員工” 、 “客戶”以及“游客”為該系統(tǒng)的參與者。 客戶系統(tǒng)管理員 游客基于 mvc 的電子商務(wù)網(wǎng)站 8 基于 mvc 的電子商務(wù)網(wǎng)站的參與者3.3 編寫(xiě)用例描述編寫(xiě)用例描述根據(jù)已確定的系統(tǒng)參與者及系統(tǒng)用例可以畫(huà)出該系統(tǒng)的用例圖如下:客戶 登錄 刪

31、除商品 購(gòu)買(mǎi)商品 更新商品 系統(tǒng)管理員 查看商品 刪除用戶 游客 94 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 系統(tǒng)設(shè)計(jì)是在系統(tǒng)分析的基礎(chǔ)上由抽象到具體的過(guò)程.主要目標(biāo)是將系統(tǒng)分析階段所提出的反映了信息需求的系統(tǒng)邏輯方案轉(zhuǎn)換成可以實(shí)施的基于計(jì)算機(jī)與通信系統(tǒng)的物理(技術(shù))方案,為下一階段系統(tǒng)實(shí)施提供必要的技術(shù)資料,應(yīng)符合系統(tǒng)性,靈活性,可靠性,經(jīng)濟(jì)性的要求.4.1 總體設(shè)計(jì)總體設(shè)計(jì)圖 4.2 基于 mvc 的電子商務(wù)網(wǎng)站功能模塊圖電子商務(wù)網(wǎng)站用戶管理產(chǎn)品管理倉(cāng)庫(kù)管理訂單管理刪除商品添加商品刪除用戶查看訂單查看倉(cāng)庫(kù)商品發(fā)布商品刪除商品修改商品信息 104.2 數(shù)據(jù)庫(kù)設(shè)計(jì)4.2.1 數(shù)據(jù)庫(kù)的需求分析 依據(jù)項(xiàng)目的處理需求,

32、對(duì)應(yīng)數(shù)據(jù)表的設(shè)計(jì)及功能如下: 管理員信息表: 存放管理員的基本信息 產(chǎn)品明細(xì)表: 存放產(chǎn)品的詳細(xì)信息 推薦商品表: 存放定期推薦的商品 商品發(fā)布表: 存放發(fā)布商品的信息 訂單表: 存放注冊(cè)信息的訂單 用戶表: 存放注冊(cè)用戶的基本信息 商品表: 存放商品的基本信息4.2.2 數(shù)據(jù)庫(kù) e-r 圖(1)局部 e-r 圖 數(shù)量交貨日期類(lèi)型小圖路徑產(chǎn)品訂單訂單編號(hào)產(chǎn)品名其他信息總價(jià)產(chǎn)品名瀏覽數(shù)介紹大圖路徑訂購(gòu)mn訂單與產(chǎn)品的關(guān)系圖 11(2)總體 e-r 圖 n m 1 1 n m n 總體 e-r 圖4.2.3 數(shù)據(jù)庫(kù)表的具體設(shè)計(jì)產(chǎn)品訂單用戶修改購(gòu)物車(chē)商品信息瀏覽查看購(gòu)物車(chē)信息下訂單記錄 12表 4.

33、1 admin : 管理員信息表表 4.2 category : 產(chǎn)品明細(xì)表表 4.3 goodways : 推薦商品表表 4.4 inform : 商品發(fā)布表表 4.5 orders : 訂單表 13表 4.6 user : 用戶表表表 4.74.7 goodsgoods : : 商品信息表商品信息表 14表表 4.84.8 productproduct : : 訂單明細(xì)表訂單明細(xì)表4.3 詳細(xì)設(shè)計(jì) 功能設(shè)計(jì)充分考慮到系統(tǒng)持有公司展示企業(yè)形象、擴(kuò)大知名度的需要.網(wǎng)站采用了多個(gè)動(dòng)態(tài)模塊,企業(yè)能夠自主、獨(dú)立的完成網(wǎng)站中大多數(shù)內(nèi)容的更新,同時(shí),設(shè)計(jì)以展示系統(tǒng)持有公司形象為主,主要體現(xiàn)基于 mvc

34、的公司網(wǎng)站的整體美感.增強(qiáng)了企業(yè)在訪問(wèn)者心中的親和力認(rèn)知度,使系統(tǒng)持有公司的產(chǎn)品為更多的客戶所矚目.網(wǎng)站內(nèi)容及結(jié)構(gòu)框架設(shè)計(jì)上力求體現(xiàn)簡(jiǎn)捷性與人性化的思想,在功能設(shè)計(jì)上配合企業(yè)的經(jīng)營(yíng)模式、經(jīng)營(yíng)思想、發(fā)展戰(zhàn)略.頁(yè)面的設(shè)計(jì)將充分體現(xiàn)系統(tǒng)持有公司大企業(yè)的形象,在框架編排、色彩搭配以及 flash 動(dòng)畫(huà)的適當(dāng)穿插都做到恰到好處,使整個(gè)網(wǎng)站在保證功能的前提下給使用者帶來(lái)良好的視覺(jué)享受和精神愉悅感.關(guān)于網(wǎng)站具體信息請(qǐng)看下面的介紹. 15 網(wǎng)站首頁(yè)是網(wǎng)站的第一內(nèi)容頁(yè),整個(gè)網(wǎng)站的最新、最值得推薦的內(nèi)容將在這里展示.以達(dá)到整個(gè)公司的企業(yè)形象的和諧統(tǒng)一;在制作上采用 php 動(dòng)態(tài)頁(yè)面,系統(tǒng)可以調(diào)用最新的內(nèi)容在首頁(yè)顯

35、示.在內(nèi)容上,首頁(yè)有公司的新聞熱點(diǎn),推薦產(chǎn)品等信息,并且管理員在后臺(tái)可以動(dòng)態(tài)更新首頁(yè)的內(nèi)容,使整個(gè)網(wǎng)站時(shí)時(shí)充滿生機(jī)和活力.在設(shè)計(jì)上,注重協(xié)調(diào)各區(qū)域的主次關(guān)系,以營(yíng)造高易用性與視覺(jué)舒適性的人機(jī)交互界面為終極目標(biāo).給瀏覽者耳目一新的感覺(jué),吸引瀏覽者經(jīng)常訪問(wèn)基于 mvc 的公司網(wǎng)站. 信息列表的模塊為基于 mvc 的公司網(wǎng)站的重要部分,詳細(xì)介紹了公司的產(chǎn)品.可以瀏覽全部的產(chǎn)品,可以按產(chǎn)品的分類(lèi)瀏覽產(chǎn)品,也可以分別按名稱或簡(jiǎn)介查找產(chǎn)品.在找到自己理想的產(chǎn)品之后,點(diǎn)擊”加入收藏”的鏈接,就可以增加一張訂單, 在訂單中,可以修改定購(gòu)產(chǎn)品的數(shù)量,交貨的日期,以及其他的要求等等.然后在一周,公司的負(fù)責(zé)人員會(huì)打

36、電話聯(lián)系用戶,以確定生產(chǎn). 另外在后臺(tái)訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)用到了 zend. 4.4 開(kāi)發(fā)架構(gòu)4.4.1 軟件開(kāi)發(fā)架構(gòu)的意義 對(duì)于已經(jīng)習(xí)慣了使用傳統(tǒng)的 php 設(shè)計(jì)方式實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)站的程序員,在剛開(kāi)始接觸 zend 時(shí)經(jīng)常會(huì)出現(xiàn)一種困惑:專業(yè)書(shū)籍和文章中總是使用 zend framework這種說(shuō)法,zend 通常也被稱為是一種 web 應(yīng)用開(kāi)發(fā)的架構(gòu)(framework),那么到底什么是架構(gòu),軟件開(kāi)發(fā)架構(gòu)的意義又是什么呢? 如果將早期的軟件開(kāi)發(fā)方式比喻為傳統(tǒng)手工業(yè)生產(chǎn)方式的話,那么基于軟件開(kāi)發(fā)架構(gòu)的開(kāi)發(fā)方式則是大型現(xiàn)代化工廠生產(chǎn)方式的體現(xiàn).雖然二者都能夠制作出產(chǎn)品,但是在生產(chǎn)效率及產(chǎn)品質(zhì)量的保證上顯

37、然會(huì)有巨大的差異. 汽車(chē)生產(chǎn)廠家在制造一輛汽車(chē)時(shí),總是先在各條生產(chǎn)線上制作出不同類(lèi)型的零件,最終再由專業(yè)的技師在專業(yè)的組裝生產(chǎn)線上將成百上千的零件組裝成一臺(tái)完整的汽車(chē),顯然,設(shè)計(jì)者的主要精力并不是用于重復(fù)地制造相同的車(chē)輪,相同的方向盤(pán),而是利用現(xiàn)成的車(chē)輪組裝出一輛輛不同的汽車(chē).同樣,開(kāi)發(fā)人員也可以利用軟件架構(gòu)中提供的組建庫(kù)(如同已經(jīng)生產(chǎn)好的規(guī)范化的汽車(chē)核心零部件庫(kù)),按照既定的組裝方式將不同的組建應(yīng)用在軟件產(chǎn)品的各個(gè)環(huán)節(jié),最終開(kāi)發(fā)出一個(gè)完 16整的,高質(zhì)量的軟件產(chǎn)品. 實(shí)際上,如果需要,汽車(chē)設(shè)計(jì)者也可以將原有的車(chē)輪進(jìn)行改造,例如涂上不同的顏色,貼上不同的裝飾物等.同理,軟件開(kāi)發(fā)人員可以在現(xiàn)有組

38、件的基礎(chǔ)上進(jìn)行擴(kuò)展和改進(jìn),這實(shí)際上充分地實(shí)現(xiàn)了軟件開(kāi)發(fā)的可擴(kuò)展性. 組件復(fù)用是面向?qū)ο缶幊趟枷氲慕Y(jié)晶,而在軟件架構(gòu)的基礎(chǔ)上進(jìn)行開(kāi)發(fā)可以最大限度地實(shí)現(xiàn)組件的復(fù)用.在大型,多層結(jié)構(gòu)的軟件開(kāi)發(fā)項(xiàng)目中,開(kāi)發(fā)和使用具有可重用性,可擴(kuò)展性,經(jīng)過(guò)良好測(cè)試的軟件組織,可以使開(kāi)發(fā)者從大量繁瑣的代碼工作中解脫出來(lái),專注于軟件設(shè)計(jì)和業(yè)務(wù)邏輯的實(shí)現(xiàn).通常將被驗(yàn)證為有效的,相同類(lèi)型問(wèn)題的解決方案進(jìn)行抽象,即可提取形成一個(gè)應(yīng)用程序框架,即framework.每一種 framework 都有自己的一套明確的實(shí)現(xiàn)機(jī)制,通常在framework 結(jié)構(gòu)中都會(huì)包含一個(gè)”命令和控制”組件(“command and control”c

39、omponent),類(lèi)似于工業(yè)生產(chǎn)中的”控制中心”,開(kāi)發(fā)人員通過(guò)它可以很容易地控制,擴(kuò)充和實(shí)現(xiàn)該 framework 上的開(kāi)發(fā)結(jié)構(gòu).4.4.2 zend 架構(gòu)簡(jiǎn)介 隨著 web 開(kāi)發(fā)技術(shù)的日益成熟,在 web 開(kāi)發(fā)開(kāi)發(fā)領(lǐng)域中出現(xiàn)了許多設(shè)計(jì)好的軟件開(kāi)發(fā)框架,zend 就是一種基于 mvc 經(jīng)典設(shè)計(jì)模式的框架,也是當(dāng)前 web 開(kāi)發(fā)中比較成熟的一種框架.(1) 經(jīng)典的 mvc 模式 mvc(model-view-controller)模式,即模型-視圖-控制器模式,其核心思想是將整個(gè)程序代碼分成相對(duì)獨(dú)立而又能協(xié)同工作的 3 個(gè)組成部分.模型(model):業(yè)務(wù)邏輯層.實(shí)現(xiàn)具體的業(yè)務(wù)邏輯,狀態(tài)管理的

40、功能.視圖(view):表示層.即與用戶實(shí)現(xiàn)交互的界面,通常實(shí)現(xiàn)數(shù)據(jù)輸入和輸出功能.控制器(controller):控制層.起到控制整個(gè)業(yè)務(wù)流程(flow control)的作用,實(shí)現(xiàn) view 和 model 部分的協(xié)同工作. mvc 設(shè)計(jì)模式可以針對(duì)需要為同樣的數(shù)據(jù)提供多個(gè)不同視圖的應(yīng)用程序,例如:公司產(chǎn)品數(shù)據(jù)庫(kù)中同樣的產(chǎn)品信息數(shù)據(jù),但需要根據(jù)用戶的不同需求在頁(yè)面中顯示其所需的不同產(chǎn)品信息.mvc 設(shè)計(jì)模式中,事件一般是指客戶端 web 瀏覽器提交的各種不同請(qǐng)求,這些請(qǐng)求由控制器進(jìn)行處理,控制器根據(jù)事件的類(lèi)型來(lái)改變模型或各個(gè)視圖,視圖 17也可以接受模型發(fā)出的數(shù)據(jù)更新的通知,依據(jù)數(shù)據(jù)更新的

41、結(jié)果調(diào)整視圖效果,呈現(xiàn)在用戶面前.而模型也可以通過(guò)視圖所獲得的用戶提交的數(shù)據(jù)進(jìn)行具體業(yè)務(wù)邏輯的處理.顯然這樣的運(yùn)行機(jī)制可以起到分工明確,指責(zé)清晰,各盡所長(zhǎng)的效果.而在軟件開(kāi)發(fā)的過(guò)程中,這樣的開(kāi)發(fā)方式無(wú)疑可以有效地區(qū)分不同的開(kāi)發(fā)者,盡可能減少彼此之間的互相影響.充分發(fā)揮每個(gè)開(kāi)發(fā)者的特長(zhǎng).這在開(kāi)發(fā)大型復(fù)雜的 web項(xiàng)目時(shí)體現(xiàn)得尤為突出. 圖 4.2 mvc 設(shè)計(jì)模式的結(jié)構(gòu)(2) zend 1.2 開(kāi)發(fā)框架 作為基于 mvc 設(shè)計(jì)模式的 web 應(yīng)用的一種典型體現(xiàn),zend 架構(gòu)實(shí)際上是建立在 model2 基礎(chǔ)上的,對(duì) model,view 和 controller 都提供了現(xiàn)成的實(shí)現(xiàn)組建.i c

42、ontroller 控制器部分 zend 中的 controller 控制器部分是通過(guò)專門(mén)的 servlet 來(lái)實(shí)現(xiàn)的,該servlet 是一個(gè) zend api 中提供的 actionservlet 類(lèi)型的實(shí)例,actionservlet類(lèi)繼承了 phpx.servlet.http.httpservlet 類(lèi),因此該類(lèi)的實(shí)例可以和普通的servlet 一樣工作,其作用是接收客戶端瀏覽器的請(qǐng)求,然后選擇執(zhí)行相應(yīng)的業(yè)模 型視圖 1視圖 2控制器事 件改變改變改變更新更新獲得數(shù)據(jù)獲得數(shù)據(jù) 18務(wù)邏輯,再把響應(yīng)結(jié)果送回到客戶端. action 對(duì)象是開(kāi)發(fā)者定義的類(lèi)(該類(lèi)必須是 zend api 中提

43、供的 action 類(lèi)的子類(lèi))的實(shí)例.在繼承該類(lèi)的過(guò)程中開(kāi)發(fā)者可以加入具體業(yè)務(wù)邏輯或調(diào)用業(yè)務(wù)邏輯模塊.action 對(duì)象在進(jìn)行了業(yè)務(wù)邏輯或調(diào)用業(yè)務(wù)邏輯模塊.action 對(duì)象在進(jìn)行了業(yè)務(wù)邏輯的處理以后會(huì)將應(yīng)用程序流程轉(zhuǎn)到合適的 view 組件,最終將響應(yīng)送回瀏覽器客戶端.zend 中提倡 action 對(duì)象只用來(lái)決定”做什么”,相當(dāng)于一個(gè)低層面的控制器,因此也可以將 action 歸納為 controller 的組成部分.ii model 模型部分 mvc 系統(tǒng)中的 model 模型部分從概念上可以分為兩類(lèi):系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動(dòng)作.zend 中的 model 部分一般由 phpbe

44、an 以及 ejb 組成.在 zend架構(gòu)中使用 phpbean 來(lái)提供具體的業(yè)務(wù)邏輯,即”怎么做”,對(duì)于復(fù)雜的系統(tǒng)也可以使用 ejb 等組件來(lái)實(shí)現(xiàn)系統(tǒng)狀態(tài)維護(hù).這種業(yè)務(wù)邏輯的細(xì)分可以增強(qiáng)可以代碼的可重用性.iii view 視圖部分 zend 中的 view 視圖部分依然可以采用 php 來(lái)實(shí)現(xiàn).此外,zend 還提供了豐富的自定義標(biāo)記庫(kù),view 部分使用這些自定義標(biāo)簽同樣可以實(shí)現(xiàn)與 model 部分的有效交互并能夠增強(qiáng)顯示功能.(2) zend 開(kāi)發(fā)環(huán)境安裝 在 tomcat 安裝完成后,即可將 zend 框架工具安裝到對(duì)應(yīng)的 web conta中.可以通過(guò) zend 的二進(jìn)制發(fā)布包安裝

45、 zend 框架,具體操作步驟:(1)下載二進(jìn)制發(fā)布版(2)將下載的 zend 二進(jìn)制發(fā)布包進(jìn)行解包,將解包目錄下的 lib 目錄下的所有.jar 文件全部復(fù)制到項(xiàng)目目錄的 web-inf/lib 下,如果在多個(gè)項(xiàng)目中都用到了 zend,則將上述文件直接復(fù)制到 tomcat 目錄下的 common/lib 下.(3)將對(duì)應(yīng)的 lib 目錄下的 zend.jar 文件添加到環(huán)境變量 classpath 中即可.以上資源可以從 /zend/userguide/index.htm獲得更多關(guān)于 zend 安裝和相關(guān)配置的說(shuō)明信息. 194.4.3 sma

46、rty 模板簡(jiǎn)介smarty 是一個(gè)使用 php 寫(xiě)出來(lái)的模板引擎,是目前業(yè)界最著名的 php 模板引擎之一。它分離了邏輯代碼和外在的內(nèi)容,提供了一種易于管理和使用的方法,用來(lái)將原本與 html 代碼混雜在一起 php 代碼邏輯分離。簡(jiǎn)單的講,目的就是要使 php 程序員同前端人員分離,使程序員改變程序的邏輯內(nèi)容不會(huì)影響到前端人員的頁(yè)面設(shè)計(jì),前端人員重新修改頁(yè)面不會(huì)影響到程序的程序邏輯,這在多人合作的項(xiàng)目中顯的尤為重要。smarty 優(yōu)點(diǎn):1. 速度:采用 smarty 編寫(xiě)的程序可以獲得最大速度的提高,這一點(diǎn)是相對(duì)于其它的模板引擎技術(shù)而言的。 2. 編譯型:采用 smarty 編寫(xiě)的程序在運(yùn)

47、行時(shí)要編譯成一個(gè)非模板技術(shù)的 php 文件,這個(gè)文件采用了 php 與 html 混合的方式,在下一次訪問(wèn)模板時(shí)將 web 請(qǐng)求直接轉(zhuǎn)換到這個(gè)文件中,而不再進(jìn)行模板重新編譯(在源程序沒(méi)有改動(dòng)的情況下) 3. 緩存技術(shù):smarty 選用的一種緩存技術(shù),它可以將用戶最終看到的 html 文件緩存成一個(gè)靜態(tài)的 html頁(yè),當(dāng)設(shè)定 smarty 的 cache 屬性為 true 時(shí),在 smarty 設(shè)定的 cachetime 期內(nèi)將用戶的 web 請(qǐng)求直接轉(zhuǎn)換到這個(gè)靜態(tài)的 html 文件中來(lái),這相當(dāng)于調(diào)用一個(gè)靜態(tài)的 html 文件。 4. 插件技術(shù):smarty 可以自定義插件。插件實(shí)際就是一些自

48、定義的函數(shù)。 5. 模板中可以使用 if/elseif/else/endif。在模板文件使用判斷語(yǔ)句可以非常方便的對(duì)模板進(jìn)行格式重排。鑒于 smarty 中的 mvc 架構(gòu)比 zend 的架構(gòu)方便,本系統(tǒng)主要用 zend 訪問(wèn)數(shù)據(jù)庫(kù),用 smarty 構(gòu)建 mvc 架構(gòu).4.5 數(shù)據(jù)持久層 數(shù)據(jù)是軟件系統(tǒng)中不可缺少的環(huán)節(jié),數(shù)據(jù)持久化的解決之道也一直是企業(yè)計(jì)算標(biāo)準(zhǔn)中最有影響力的部分.如今關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)穩(wěn)定地占據(jù)著主要的數(shù)據(jù)庫(kù)市場(chǎng),xml 技術(shù)和 xml 數(shù)據(jù)庫(kù)技術(shù)也日漸成熟. 204.5.1 持久化數(shù)據(jù) 數(shù)據(jù)是我們軟件開(kāi)發(fā)人員必須考慮的對(duì)象.無(wú)論你使用哪種技術(shù),借助哪種工具,以及購(gòu)買(mǎi)哪種軟件平

49、臺(tái)產(chǎn)品,當(dāng)接受一個(gè)實(shí)際的問(wèn)題時(shí),你都需要面對(duì)實(shí)際的數(shù)據(jù),考慮實(shí)際數(shù)據(jù)的各種問(wèn)題.在這些問(wèn)題中往往都包含數(shù)據(jù)持久化的問(wèn)題,這不僅是因?yàn)槲覀兊挠?jì)算機(jī)內(nèi)存有限,更主要的原是業(yè)務(wù)邏輯的需要,作為一個(gè)接觸軟件技術(shù),嘗試寫(xiě)程序的人,我們要接觸各種類(lèi)型的數(shù)據(jù).下面列舉了三種常見(jiàn)的數(shù)據(jù)類(lèi)型:(1) 隨機(jī)數(shù)據(jù) 這種數(shù)據(jù)指的是不確定結(jié)構(gòu),不了解數(shù)量,目前也搞不清關(guān)系的數(shù)據(jù).它聽(tīng)起來(lái)很奇怪,但在實(shí)際的程序設(shè)計(jì)中十分常見(jiàn).例如,從一個(gè)震動(dòng)源傳遞到計(jì)算機(jī)采集卡的數(shù)據(jù),再比如一個(gè)自然物生長(zhǎng)過(guò)程中的數(shù)據(jù).可能有些數(shù)據(jù)實(shí)際上是很有規(guī)律的,但是在設(shè)計(jì)程序時(shí)由于對(duì)它的了解很少,使它對(duì)于我們來(lái)說(shuō)也成了隨即的數(shù)據(jù)了.我沒(méi)曾經(jīng)在遇到這

50、種搞不大清楚的數(shù)據(jù)時(shí),使用很大的數(shù)組或者多個(gè)鏈表來(lái)表述,不管下一個(gè)數(shù)據(jù)的值是什么,先存儲(chǔ)起來(lái)再說(shuō).有時(shí)候當(dāng)遇到的數(shù)據(jù)總也摸不到規(guī)律,或者越來(lái)越多,內(nèi)存也容納不下時(shí),就找個(gè)文件存放起來(lái),后來(lái)發(fā)現(xiàn)其實(shí)存入文件的方式很不錯(cuò),起碼可以一直繼續(xù)下去.也許這就是最佳的持久化策略了.(2) 屬性數(shù)據(jù) 在接觸具體的項(xiàng)目開(kāi)發(fā)任務(wù)時(shí),更多的時(shí)候要接觸到屬性類(lèi)型的數(shù)據(jù),這些數(shù)據(jù)來(lái)源于對(duì)象的屬性,當(dāng)然這些屬性之間還存在關(guān)系,對(duì)于此類(lèi)數(shù)據(jù),似乎最好的持久化方法就是利用關(guān)系型數(shù)據(jù)庫(kù)表了,在存入數(shù)據(jù)表的過(guò)程中還可以借助mysql 來(lái)提高開(kāi)發(fā)的效率,或者直接使用 jdbc 來(lái)傳遞 sql 語(yǔ)句.這兩種方法有些相似但還有細(xì)微的

51、差別.(3) xml 數(shù)據(jù) 現(xiàn)在很多網(wǎng)絡(luò)上的應(yīng)用程序都使用 xml 類(lèi)型的數(shù)據(jù),或者說(shuō)是一種樹(shù)狀的數(shù)據(jù),如何將這兩種數(shù)據(jù)持久化保存下來(lái)呢?一種方法是將 xml 數(shù)據(jù)拆分為屬性數(shù)據(jù),然后存儲(chǔ)到關(guān)系型數(shù)據(jù)庫(kù)中.另一種方式比較新,是將 xml 數(shù)據(jù)存儲(chǔ)到xml 數(shù)據(jù)庫(kù)中,在 xml 數(shù)據(jù)庫(kù)中存儲(chǔ)這種數(shù)據(jù)時(shí),數(shù)據(jù)的結(jié)構(gòu)不變,xml 數(shù)據(jù)在 21xml 數(shù)據(jù)庫(kù)中,在 xml 數(shù)據(jù)庫(kù)中以文檔對(duì)象形式保存,使用 xpaht 和 xquery 查詢語(yǔ)言來(lái)查詢 xml 數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù),或者多個(gè) xml 文檔中的多個(gè)節(jié)點(diǎn)數(shù)據(jù). 相對(duì)于屬性數(shù)據(jù)而言,xml 數(shù)據(jù)是很寬松的.首先,xml 數(shù)據(jù)的結(jié)構(gòu)沒(méi)有被確定下來(lái),

52、起碼沒(méi)有被定死為某種僵化的結(jié)構(gòu).其次,對(duì)于 xml 數(shù)據(jù)的各個(gè)節(jié)點(diǎn)來(lái)說(shuō),數(shù)據(jù)的類(lèi)型并沒(méi)有被確定下來(lái),在 xml 中如果不加特殊的約束(例如 dtd 或者 schema),xml 文檔中的數(shù)據(jù)和結(jié)構(gòu)可以有十分大的變化空間,在 xml 中以字符串形式存在的數(shù)據(jù),很難確定它的類(lèi)型是 int 或是 string.最后,xml 是可以被轉(zhuǎn)換處理的,利用 xslt 可以將 xml 轉(zhuǎn)換成希望的結(jié)果.因此可以說(shuō)對(duì) xml 數(shù)據(jù)的約束是比較寬松的,xml 數(shù)據(jù)類(lèi)型甚至可以用來(lái)模擬實(shí)現(xiàn)一些隨即性質(zhì)的數(shù)據(jù).4.5.2 持久化技術(shù) 一直以來(lái),在 php 開(kāi)發(fā)領(lǐng)域中基于數(shù)據(jù)庫(kù)應(yīng)用的設(shè)計(jì)實(shí)現(xiàn)一直是面向關(guān)系的,也就是說(shuō)與

53、數(shù)據(jù)庫(kù)相關(guān)的處理過(guò)程并沒(méi)有實(shí)現(xiàn)真正的面向?qū)ο?如何在數(shù)據(jù)存取的操作中實(shí)現(xiàn)真正的面向?qū)ο?一直是開(kāi)發(fā)人員探索的問(wèn)題.正在使用中的對(duì)象序列化技術(shù),ejb 中 entity bean 技術(shù)等,都是在這方面很好的探索.但是實(shí)體 bean 設(shè)計(jì)實(shí)現(xiàn)過(guò)程中的繁瑣和復(fù)雜,使得許多開(kāi)發(fā)人員望而卻步.而 mysql 的出現(xiàn),提供了一個(gè)符合 php 面向?qū)ο缶幊趟枷?易于使用的數(shù)據(jù)庫(kù)持久化解決方案.因此,在目前行業(yè)的 php 數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目中,有越來(lái)越多的開(kāi)發(fā)人員開(kāi)始嘗試使用 mysql 在數(shù)據(jù)庫(kù)外面包裹上一層面向?qū)ο蟮耐庖?從而將開(kāi)發(fā)人員從繁瑣,重復(fù),技術(shù)含量不高的數(shù)據(jù)庫(kù)編程中結(jié)果出來(lái).(1) mysql 概述

54、 mysql 在英文中的意思是”冬眠”,從這個(gè)角度也可以體會(huì)到 mysql 架構(gòu)下提供的相關(guān)技術(shù)可以實(shí)現(xiàn)度十角狀態(tài)的持久性保存.在傳統(tǒng)的數(shù)據(jù)庫(kù)編程中,開(kāi)發(fā)人員要面對(duì)大量重復(fù)行代碼的編寫(xiě),以實(shí)現(xiàn)對(duì)不同數(shù)據(jù)表中的數(shù)據(jù)的獲取,并將獲取到的記錄數(shù)據(jù)封裝成對(duì)象,在處理完成之后,如果需要進(jìn)行對(duì)象狀態(tài)的存取,需要將對(duì)象中的數(shù)據(jù)拆卸成數(shù)據(jù)庫(kù)記錄中的對(duì)應(yīng)字段的值,然后向數(shù)據(jù)庫(kù)中進(jìn)行存取. 這種工作方式顯然沒(méi)有實(shí)現(xiàn)真正意義上的數(shù)據(jù)存取階段的面向?qū)ο?雖然數(shù)據(jù)存取過(guò)程中的工作步驟是基本固定的,但是由于操作的數(shù)據(jù)表中字段列表數(shù)據(jù) 22的不同,使得開(kāi)發(fā)人員必須要不厭其煩地書(shū)寫(xiě)與相應(yīng)的實(shí)體類(lèi)對(duì)應(yīng)的封裝處理過(guò)程. 而在 m

55、ysql 中,類(lèi)似這種重復(fù)性高,工作量大,但是又必須保證高質(zhì)量完成的體力活,全部由 mysql 接管過(guò)去.這對(duì)廣大的 php 開(kāi)發(fā)人員無(wú)疑是個(gè)非常好的消息.mysql 本質(zhì)上是一個(gè)面向 php 開(kāi)發(fā)環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具.在mysql 之前,開(kāi)發(fā)人員要將面向?qū)ο蟮能浖完P(guān)系數(shù)據(jù)庫(kù)結(jié)合在一起,往往會(huì)費(fèi)長(zhǎng)麻煩.而借助 mysql 對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射技術(shù),可以非常輕松地將以面向?qū)ο笏枷敕庋b的對(duì)像的各個(gè)狀態(tài)數(shù)據(jù)映射到基于 sql 的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去. 圖 3.2 mysql 工作示意圖php 應(yīng)用hibernatehql 語(yǔ)句數(shù)據(jù)庫(kù)sql 語(yǔ)句xml映射文件 235 系統(tǒng)實(shí)現(xiàn)5.1 數(shù)據(jù)

56、的訪問(wèn)本系統(tǒng)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的操作用的是 zend 中的 zend_db_adapter 類(lèi).zend_db_adapter 是 zendfrmaeword 的數(shù)據(jù)庫(kù)抽象層 api. 基于 pdo,可以使用 zend_db_adapter 連接和處理多種 數(shù)據(jù)庫(kù),包括:microsoft sql server,mysql,sqlite 等.要針對(duì)不同的數(shù)據(jù)庫(kù)實(shí)例化一個(gè) zend_db_adapter 對(duì)象,需要將 adapter 的名字和描述數(shù)據(jù)庫(kù)連接的參數(shù)數(shù)組作為參數(shù),靜態(tài)調(diào)用 zend_db:factory()方法訪問(wèn)代碼如下:require_once zend/db.php;$params

57、= array (host = ,username = malory,password = *,dbname = camelot);$db = zend_db:factory(pdo_mysql, $params);操作數(shù)據(jù)庫(kù)主要用到增刪改查增加時(shí)用到 insert,lastinsertid 兩個(gè)關(guān)鍵字首先創(chuàng)建一個(gè) $db 對(duì)象, 然后以列名=數(shù)據(jù)的格式格式構(gòu)造插入數(shù)組,插入數(shù)據(jù)行具體代碼如下:$row = array (noble_title = king,first_name = arthur,favorite_color = blue,);刪除和更新跟增加差不多,在這里

58、就不一一舉例了.查找用上面的語(yǔ)句返回一個(gè)結(jié)果集,這個(gè)結(jié)果集就是 php 中特有的數(shù)據(jù)類(lèi)型,叫資源類(lèi).想獲得數(shù)據(jù)必須要遍歷遍歷結(jié)果集的方法有 fetchall(),fetchass(),fetchcol(),fetchone(),fetchpairs(),fetchrow()等. 24此外,zend 框架也提供了事務(wù)處理功能.默認(rèn)情況下,pdo(因此 zend_db_adapter 也是)是采用自動(dòng) commit 模式主要關(guān)鍵字為 begintransaction,commit,rollback事務(wù)處理實(shí)現(xiàn)創(chuàng)建一個(gè) $db 對(duì)象, 然后開(kāi)始做一個(gè)事務(wù)處理.具體代碼如下: $db-begintra

59、nsaction(); try $db-query(.); $db-commit(); catch (exception $e) $db-rollback(); echo $e-getmessage(); 5.2 對(duì)頁(yè)面的控制本系統(tǒng)主要用 smarty 模板來(lái)完成對(duì)頁(yè)面的控制.在根目錄下建立了新的目錄 learn/,再在 learn/里建立一個(gè)目錄 smarty/。將剛才解壓縮出來(lái)的目錄的 libs/拷貝到 smarty/里,再在 smarty/里新建 templates目錄,templates 里新建 cache/,templates/,templates_c/, config/.在對(duì)頁(yè)面進(jìn)

60、行控制的時(shí)候,把模型代碼放在 templates 中,cache 主要用于存放緩存的一些東西.一般情況下是將其設(shè)為 false.主要用到的 smarty 代碼如下:require_once (./public/inc/f117_smarty.php;$smarty = new f117_smarty;$smarty-;template_dir = ./templates/;$smarty-;compile_dir = ./templates_c/;$smarty-;config_dir = ./configs/;$smarty-;cache_dir = ./cache/;$smarty-;ca

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論