zendframework官方入門手冊(cè)_第1頁
zendframework官方入門手冊(cè)_第2頁
zendframework官方入門手冊(cè)_第3頁
zendframework官方入門手冊(cè)_第4頁
zendframework官方入門手冊(cè)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、創(chuàng)建項(xiàng)目為了創(chuàng)建項(xiàng)目,你必須首先下載并解壓縮Zend框架。安裝Zend框架屮相處了一個(gè)完整的Zend框架的PHP堆棧最簡單的方法是通過安裝Zend服務(wù)器。Zend服務(wù)器有本地安裝的MacOSX,Windows中的FedoraCore和Ubuntu,以及作為一個(gè)普遍的兼容大多數(shù)Linux發(fā)行版的安裝包。框架文件后,您已經(jīng)安裝了Zend服務(wù)器,可根據(jù)發(fā)現(xiàn)的/usr/本地/ZEND/MacOSX和Linux上的份額/ZendFramework,和C:ProgramFiles文件的ZendZendServer共享IZendFrameworkWindows上。已配置的include_path將包括Zen

2、d框架。或者,您可以下載最新版本的Zend框架和提取的內(nèi)容,使你這樣做了說明?;蛘撸梢詫⒙窂教砑拥綆?歸檔文件的子目錄到你的php.ini的設(shè)置。這就是它!Zend框架正在安裝,并準(zhǔn)備使用。創(chuàng)建您的項(xiàng)目q注:ZF在您的ZendFramework安裝的命令行工具是一個(gè)bin/子目錄中,包含腳本zf.sh和zf.bat,分別為基于UNIX和基于Windows的用戶。使這個(gè)腳本的絕對(duì)路徑的說明。無論你看到的命令引用ZF,請(qǐng)?zhí)鎿Q腳本的絕對(duì)路徑。在類Unix系統(tǒng),你可能想使用shell的別名功能:如果你有問題設(shè)立的ZF命令行工具,請(qǐng)參閱到的別名zfsh=路徑/ZendFramework/BIN/zf

3、sh。手冊(cè)。打開一個(gè)終端(在Windows中,開始-運(yùn)行,然后使用CMD)。導(dǎo)航到一個(gè)目錄,您想啟動(dòng)一個(gè)項(xiàng)目。然后,使用相應(yīng)的腳本路徑,并執(zhí)行下列之一:%ZF創(chuàng)建項(xiàng)目快速啟動(dòng)運(yùn)行此命令將創(chuàng)建您的網(wǎng)站的基本結(jié)構(gòu),包括你最初的控制器和視圖。樹看起來如下:快速入門|-應(yīng)用|-Bootstrap.php|-CONFIGS|-的application.ini|-控制器|一ErrorController.php|一IndexController.php|-模型10.|-意見11.II-傭工12.I-腳本13.II-錯(cuò)誤14.|I-error.phtml15.I-指數(shù)16.I-index.phtml17.I

4、-庫18.I-公共19.II-htaccess的。20.I-的index.php21.-測(cè)試22.I-應(yīng)用23.I-bootstrap.php24.I-庫25.I-bootstrap.php26.一phpunit.xml如果你還沒有加入到你的include_pathZend框架,在這一點(diǎn)上,我們建議或者復(fù)制或libg.a連結(jié)到你的庫/目錄。在任何情況下,你想要么遞歸復(fù)制或符號(hào)的圖書館/Zend/你的ZendFramework安裝到您的項(xiàng)目庫/目錄的目錄。在類Unix系統(tǒng),這將類似于下列之一:#符號(hào)鏈接:%光盤庫;LN-S路徑/ZendFramework/圖書館/Zend的。3.#復(fù)制:光盤庫;

5、CP-R路徑/ZendFramework/圖書館/Zend的。在Windows系統(tǒng)上,它可能是最容易做,從資源管理器?,F(xiàn)在,該項(xiàng)目創(chuàng)建,開始理解的主要構(gòu)件是引導(dǎo),配置,動(dòng)作控制器和意見。的引導(dǎo)勺您的自舉類定義什么樣的資源和組件初始化。默認(rèn)情況下,初始化Zend框架的前端控制器它使用的應(yīng)用程序控制器默認(rèn)的目錄中尋找行動(dòng)控制器(稍后)。這個(gè)類看起來如下:/應(yīng)用/Bootstrap.php的2.類的Bootstrap延伸Zend_Application_Bootstrap_Bootstrap正如你可以看到,沒有多少是必要的開始。雖然Zend框架本身是configurationless的,你經(jīng)常需要配

6、置您的應(yīng)用程序。默認(rèn)配置是擺在應(yīng)用/CONFIGS/的application.ini,并包含一些基本的指令設(shè)置你的PHP環(huán)境(例如,把錯(cuò)誤報(bào)告和關(guān)閉),表明引導(dǎo)類路徑(以及它的類名),你的動(dòng)作控制器的路徑。它看起來如下:;應(yīng)用/CONFIGS的/的application.ini2.生產(chǎn)phpSettings。display_startup_errors=0phpSettings。的display_errors=0的includepaths。庫APPLICATION_PATH“/。/庫弓丨導(dǎo)路徑=APPLICATION_PATH、/Bootstrap.php的引導(dǎo)。類=引導(dǎo)appnamespac

7、e=應(yīng)用程序resources.frontController。controllerDirectory=APPLICATION_PATH“/控制器resources.frontController.params。displayExceptions=012.分期:生產(chǎn)14.測(cè)試:生產(chǎn)phpSettings。display_startup_errors=1phpSettings。的display_errors=118.發(fā)展:生產(chǎn)phpSettings。display_startup_errors=1phpSettings。的display_errors=1有關(guān)此文件應(yīng)注意的幾件事情。首先,使用IN

8、I風(fēng)格的配置時(shí),您可以參考常數(shù)直接和擴(kuò)大;APPLICATION_PATH實(shí)際上是一個(gè)常數(shù)。此外,請(qǐng)注意,有幾個(gè)部分定義:生產(chǎn),分期,測(cè)試和開發(fā),。后者繼承從生產(chǎn)”環(huán)境設(shè)置。這是一個(gè)有用的方式來組織配置,以確保適當(dāng)?shù)脑O(shè)置是在應(yīng)用開發(fā)的每個(gè)階段提供。動(dòng)作控制器F你的應(yīng)用程序的行動(dòng)控制器包含您的應(yīng)用程序的工作流程,并做您的請(qǐng)求映射到適當(dāng)?shù)哪J胶鸵庖姷墓ぷ?。?dòng)作控制器應(yīng)在“行動(dòng)”的結(jié)尾有一個(gè)或多個(gè)方法,這些方法可能會(huì)被要求通過網(wǎng)絡(luò)。默認(rèn)情況下,ZendFramework的網(wǎng)址遵循模式/控制器/行動(dòng),“控制器”地圖行動(dòng)控制器的名稱(減去“控制器”后綴)和“行動(dòng)”映射到一個(gè)動(dòng)作方法(減行動(dòng)”的后綴)。通

9、常情況下,你總是需要一個(gè)Indexcontroller,這是一個(gè)備用的控制器,這也是該網(wǎng)站的主頁,一個(gè)Errorcontroller,這是用來顯示HTTP404錯(cuò)誤(控制器或動(dòng)作沒有找到)和HTTP500錯(cuò)誤的東西,如(應(yīng)用程序錯(cuò)誤)。..9.1011121314..9.1011121314151617181920默認(rèn)Indexcontroller如下:/&用/控制器/IndexController.php的,類IndexControllerZend_Controller_Action的延伸公共初始化函數(shù)()/*初始化動(dòng)作控制器/公共

10、功能indexAction()/操作的主體和默認(rèn)Errorcontroller如下:/應(yīng)用/控制器/ErrorController.php的,類ErrorcontrollerZend_Controller_Action的延伸公共的功能errorAction()$錯(cuò)誤=$一_getParam(“error_handler);開關(guān)(錯(cuò)誤-類型)情況ZendControllerPluginErrorHandler:EXCEPTIONNOROUTE情況ZendControllerPluginErrorHandler:EXCEPTIONNOCONTROLLER情況ZendControllerPlugin

11、ErrorHandler:EXCEPTIONNOACTION/404錯(cuò)誤-控制器或行動(dòng)沒有發(fā)現(xiàn)-的GetResponse()-setHttpResponseCode(404);$這個(gè)-視圖-消息=頁面沒有找到;打破;默認(rèn)情況下:/應(yīng)用程序錯(cuò)誤21222324252627282..9.1011121314151617-的GetResponse()-setHttpResponseCode(500);-視圖-消息=應(yīng)用程序錯(cuò)誤;打破;視圖-例外=$錯(cuò)誤-異常;視圖-請(qǐng)求=$失誤-請(qǐng)求;你會(huì)注意到:(1)的Indexcontroller包含沒有真正的代碼,和(2)Erro

12、rcontroller參考“意見”屬性。這導(dǎo)致很好地融入我們的下一個(gè)主題。寫在普通的舊的PHPZend框架的意見。查看腳本放置在應(yīng)用程序意見腳本/,在那里他們進(jìn)一步分類使用的控制器名稱。在我們的例子中,我們有Indexcontroller和Errorcontroller,因此,我們有相應(yīng)的索弓/錯(cuò)誤/在我們的視圖腳本目錄的子目錄。這些子目錄內(nèi),你就會(huì)發(fā)現(xiàn)和創(chuàng)建視圖腳本對(duì)應(yīng)每個(gè)控制器的行動(dòng)暴露在默認(rèn)情況下,因此我們有視圖腳本索弓/的index.phtml和錯(cuò)誤/error.phtml。視圖腳本可能包含你想要的任何標(biāo)記,并使用PHP開始標(biāo)記v?結(jié)束標(biāo)記插入PHP指令。以下是我們的默認(rèn)安裝指數(shù)/in

13、dex.phtml視圖腳本為:!-應(yīng)用程序/意見/腳本/指數(shù)/index.phtml-STYLE答:鏈接答:訪問顏色:#0398CA跨越#ZF名稱:#91BE3F格#歡迎顏色:#FFFFFF的背景圖像:URL(HTTP/,/像/bkg_header.jpg)的;寬度:600px的;高度:400像素;邊界:2px的固體斗444444;溢出:隱臧;文本對(duì)齊:中心;TOC o 1-5 h z25.格#更多信息背景圖像:網(wǎng)址(HTTP:/圖像/bkg_body的-bottom.gif);身高:100%;31./STYLEdiv的id=歡迎歡迎跨度ID=“ZF-名稱Zend框架!/SPAN這是你的項(xiàng)目的

14、主要頁面2.有用的鏈接:br/43.的宀href= HYPERLINK /%22%e3%80%89Zend /Zend框架網(wǎng)站|44.ahref= HYPERLINK /manual/en/%22%e3%80%89 /manual/en/Zend框架45.手冊(cè)/A46./P47./DIV48./DIV49.=span=style=color:rgb(255,0,0);錯(cuò)誤/error.pht視圖腳本是稍微更有趣,因?yàn)樗褂靡恍㏄HP的條件:DOCTYPEHTML公眾“-/W3C/DTDXHTML1.0Strict標(biāo)準(zhǔn)/;“ HYPERLINK /TR/xhtml1/DTD/

15、xhtml1-strict.dtd%e3%80%89 /TR/xhtml1/DTD/xhtml1-strict.dtdHTML的xmlns=“HTTP:/ HYPERLINK /1999/xhtml%e2%80%9c%e3%80%89 /1999/xhtml“.9.101112131415161718192021222324252627282930ZendFramework的默認(rèn)應(yīng)用程序/TITLE/HEADBODYH1發(fā)生錯(cuò)誤PHP?呼應(yīng)$這個(gè)-消息?H3異常信息:/H3Pb郵件:?PHP呼應(yīng)$這個(gè)-例夕卜-GETMESSAGE()?/PH3堆棧跟蹤:PRE?PHP呼應(yīng)$這個(gè)一

16、例夕卜一getTraceAsString()?H3請(qǐng)求參數(shù):PRE/HTML創(chuàng)建一個(gè)虛擬主機(jī)對(duì)于這種快速啟動(dòng)的目的,我們將假定您正在使用ApacheWeb服務(wù)器。Zend框架與其他Web服務(wù)器-包括MicrosoftInternet信息服務(wù)器的lighttpd,nginx的,更完美-但大多數(shù)開發(fā)商應(yīng)在最低阿帕奇famililar,它提供了一個(gè)簡單的介紹ZendFramework的目錄結(jié)構(gòu)和重寫能力。要?jiǎng)?chuàng)建您的虛擬主機(jī),你需要知道你的位置httpd.conf文件,并有可能在其他配置文件位于。一些常見的位置:/etc/httpd的/httpd.conf中(的Fedora,RHEL中,和其他人)/e

17、tc/apache2/httpd.conf(的Debian,Ubuntu和其他)的/usr/本地/ZEND的/etc/httpd.conf文件(*nix的機(jī)器上的Zend服務(wù)器)C:程序文件Zend的的Apache2conf下(Zend的Windows機(jī)器上的服務(wù)器)在您的httpd.conf(或在某些系統(tǒng)上的httpd-vhosts.conf),你需要做兩件事情。首先,確保NameVirtualHost被定義,通常情況下,你會(huì)設(shè)置它的值為“80”。二,定義一個(gè)虛擬主機(jī):的ServerNamequickstart.localDocumentRoot的路徑/快速啟動(dòng)/公共4.SETENVAPPL

18、ICATION_ENV發(fā)展6.Directory/path/to/quickstart/publicDirectoryindex的index.php文件設(shè)置AllowOverride所有命令允許,拒絕允許從所有/指南引導(dǎo)(視圖);$視圖=$-的getResource(“視圖”);$視圖-DOCTYPE(“XHTML1_STRICT);..9.10111213141516171819202122232425現(xiàn)在,我們已經(jīng)初始化Zend_Layout的設(shè)置DOCTYPE,讓我們創(chuàng)建我們的網(wǎng)站廣泛布局:DOCTYPE()?ZendFramework的快速入門應(yīng)用程序/TI

19、TLEheadLink()一appendstylesheet(/CSS/global.css)?/HEADdiv的id=頭的風(fēng)格=背景色:#EEEEEE;高度:30像素;div的id=頭標(biāo)志樣式浮動(dòng):左ZF快速啟動(dòng)應(yīng)用/DIVdiv的id=標(biāo)題導(dǎo)航=浮動(dòng)權(quán)|ahref=?PHP的echo$這個(gè)-URL(陣列(控制器=留言),默認(rèn),真實(shí)的)?在線留言/A/DIV/DIV元素,以及保持整個(gè)應(yīng)用程序的軌道。如果你需要添加額外的CSS表,以支持一個(gè)單一的行動(dòng),你可以這樣做,并保證這將是目前在最終渲染的頁面。注:邊檢站立即去“的http:/localhost”,并檢查了源。你應(yīng)該看到你的XHTML頭,頭

20、,標(biāo)題,和身體部分。創(chuàng)建一個(gè)模型和數(shù)據(jù)庫表在我們開始之前,讓我們考慮的東西:這里將這些類的生活,我們將如何找到他們呢?創(chuàng)建默認(rèn)項(xiàng)目中,我們實(shí)例化一個(gè)自動(dòng)加載磁帶機(jī)。我們可以附加其他的自動(dòng)裝載機(jī),以便它知道在哪里可以找到不同的類。通常情況下,我們希望我們的各種MVC類分組在同一棵樹下-在這種情況下,應(yīng)用程序/-和最經(jīng)常使用一個(gè)共同的前綴。..9.101112131415161718192021222324252627282930Zend_Controller_Front有一個(gè)模塊,這是個(gè)人的迷你應(yīng)用程序的概念。模塊模仿,ZF工具應(yīng)用/下建立目錄結(jié)構(gòu),并在他們里面所有的

21、類都假定有一個(gè)共同的前綴,模塊名稱開始。應(yīng)用/本身就是一個(gè)模塊-“默認(rèn)”或“應(yīng)用程序”模塊。正因?yàn)槿绱?,我們將要為這個(gè)目錄內(nèi)的資源設(shè)置自動(dòng)裝填。Zend_Application_Module_Autoloader提供所需的各種資源的映射下,以適當(dāng)?shù)哪夸浤K的功能,以及提供一個(gè)標(biāo)準(zhǔn)的命名機(jī)制。默認(rèn)情況下創(chuàng)建類的一個(gè)實(shí)例,引導(dǎo)對(duì)象的初始化過程中,將默認(rèn)使用您的應(yīng)用程序引導(dǎo)模塊的前綴“應(yīng)用程序”。正因?yàn)槿绱?,我們的模型,表格,表類,將所有與類前綴Application的開始。現(xiàn)在,讓我們的考慮是什么使留言板。通常情況下,它們僅僅是注釋,時(shí)間戳并經(jīng)常,電子郵件地址的一個(gè)條目清單。假設(shè)我們存儲(chǔ)在數(shù)據(jù)庫中

22、,我們可能還需要一個(gè)獨(dú)特的標(biāo)識(shí),為每個(gè)條目。我們可能會(huì)希望能夠保存條目,取個(gè)別條目,檢索所有條目。正因?yàn)槿绱耍?個(gè)簡單的留言模型API可能看起來像這樣:/應(yīng)用程序/模型/Guestbook.php的類Application_Model_Guestbook保護(hù)美兀_comment;保護(hù)$_created;保護(hù)美元_email;保護(hù)的_id美元;公共函數(shù)_set($名稱,值);公共函數(shù)_get($名);公共的功能setComment(文本美元);TOC o 1-5 h z公共的功能getComment();公共功能setEmail(電子郵件);公共功能getEmail;公共功能setCreated

23、;getCreated公共函數(shù);公共功能SETID;公共功能的getId();類Application_Model_GuestbookMapper公共函數(shù)保存(Application_Model_Guestbook$留言);公共功能找到($ID);公共功能fetchAll;31.一et()和_set()將提供方便的機(jī)制,為我們?cè)L問個(gè)別項(xiàng)目的性質(zhì),并代理其他getter和setter。他們也將有助于確保我們的白名單的唯一屬性將對(duì)象。找到()和fetchAll()提供的能力,以獲取一個(gè)條目或所有條目,同時(shí)保存()節(jié)約數(shù)據(jù)存儲(chǔ)的條目。現(xiàn)在,從這里,我們可以開始思考建立數(shù)據(jù)庫。首先,我們需要初始化DB

24、資源。與資源布局和視圖,我們可以提供的配置DB資源。我們可以做的ZF配置DB適配器命令:%ZF配置DB適配器適配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/guestbook.db”生產(chǎn)用于生產(chǎn)的DB配置已被寫入到應(yīng)用程序配置文件。5.%ZF配置DB適配器適配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/數(shù)據(jù)/DB/留言-testing.db”測(cè)試用于生產(chǎn)的DB配置已被寫入到應(yīng)用程序配置文件。10.%ZF配置DB適配器適配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/數(shù)據(jù)/DB/留言-d

25、ev.db”發(fā)展用于生產(chǎn)的DB配置已被寫入到應(yīng)用程序配置文件?,F(xiàn)在,編輯/CONFIGS/的application.ini文件,您的應(yīng)用程序,在這里你會(huì)看到在適當(dāng)?shù)牟糠痔砑右韵滦小?應(yīng)用/CONFIGS的/的application.ini2.生產(chǎn);resources.db。適配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/guestbook.db”7.測(cè)試:生產(chǎn);resources.db。適配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“

26、/。/數(shù)據(jù)/DB/留言-testing.db”12131415..9.101112131415161718192021222324252627281.發(fā)展:生產(chǎn)resources.db。適配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/留言-dev.db”你的最終配置文件應(yīng)該看起來如下:;應(yīng)用/CONFIGS的/的application.ini生產(chǎn)phpSettings。display_startup_errors=0phpSettings。的display_errors=0

27、弓丨導(dǎo)路徑=APPLICATION_PATH、/Bootstrap.php的”引導(dǎo)。類=引導(dǎo)appnamespace=應(yīng)用程序resources.frontController。controllerDirectory=APPLICATION_PATH“/控制器resources.frontController.params。displayExceptions=0resources.layout。LayoutPath的=APPLICATION_PATH“/布局/腳本resources.view=resources.db。適配器=“PDO_SQLITEresources.db.params。DBN

28、AME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/guestbook.db分期:生產(chǎn)測(cè)試:生產(chǎn)phpSettings。display_startup_errors=1phpSettings。的display_errors=1resources.db。適配器=“PDO_SQLITEresources.db.params。DBNAME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/留言-testing.db發(fā)展:生產(chǎn)phpSettings。display_startup_errors=1phpSettings。的display_errors=1resources.db。適配器=“P

29、DO_SQLITEresources.db.params。DBNAME=APPLICATION_PATH“/。/數(shù)據(jù)/DB/留言-dev.db請(qǐng)注意,數(shù)據(jù)庫(S)將在存儲(chǔ)數(shù)據(jù)/DB/創(chuàng)建這些目錄,并讓他們寫世界。在類Unix系統(tǒng),你可以做如下:MKDIR-P%chmod-R的數(shù)據(jù)/DB;+RWX數(shù)據(jù)在Windows中,您將需要在資源管理器中創(chuàng)建的目錄,并設(shè)置權(quán)限,以允許任何人都可以寫的目錄。在這一點(diǎn)上,我們有一個(gè)數(shù)據(jù)庫連接,在我們的例子中,它連接到一個(gè)SQLite數(shù)據(jù)庫位于內(nèi)我們的應(yīng)用程序數(shù)據(jù)/目錄。所以,讓我們?cè)O(shè)計(jì)一個(gè)簡單的表格,將舉行我們的留言簿條目。-腳本/schema.sqlite.s

30、ql的-您將需要加載與此SQZ數(shù)據(jù)庫架構(gòu)。4.創(chuàng)建表的留言(ID的INTEGERNOTNULL,PRIMARYKEYAUTOINCREMENT的,電子郵件VARCHAR(32)NOTNULL默認(rèn)“ HYPERLINK mailto:noemail noemail評(píng)論文字為NULL,倉U建的DATETIMENOTNULL);11.創(chuàng)建索引身份證留言(“ID”);和,使我們可以有一些工作數(shù)據(jù)框,讓我們創(chuàng)建信息,使我們的應(yīng)用程序有趣的幾行。-腳本/data.sqlite.sql的-你可以開始填充用下面的兀語句的數(shù)據(jù)庫。4.INSERT到留言(電子郵件,注釋,創(chuàng)建)值(ralph.schindler,

31、你好!希望你享受這個(gè)范例ZF應(yīng)用程序!“的DATETIME(現(xiàn)在);INSERT到留言(電子郵件,注釋,創(chuàng)建)值(“foo,巴茲巴茲巴茲,巴茲巴茲巴茲巴茲BAZ-BAZ巴茲巴茲。的DATETIME(現(xiàn)在);現(xiàn)在,我們有兩個(gè)架構(gòu)和定義一些數(shù)據(jù)。讓我們一起得到一個(gè)腳本,我們現(xiàn)在可以執(zhí)行建立這個(gè)數(shù)據(jù)庫。當(dāng)然,這并不需要在生產(chǎn),但這個(gè)腳本將幫助開發(fā)人員建立了本地?cái)?shù)據(jù)庫的要求,使他們能夠有充分工作的應(yīng)用程序。創(chuàng)建含有下列內(nèi)容的腳本/load.sqlite.php的腳本:/腳本/load.sqlite.php的2./*創(chuàng)建和裝載數(shù)據(jù)庫的腳本*/6./初始化應(yīng)用程序的路徑和自動(dòng)裝填定義的(APPLICATI

32、ON_PATH)9.101112131415161718192021222324252627282930313233343536373839404142434445464748495051|定義(APPLICATION_PATH“,真實(shí)路徑(目錄名(FILE_應(yīng)用程序。“);set_include_path破滅(PATH_SEPARATOR,陣歹U(APPLICATION_PATH。/。/庫“,get_include_path();的Zend/裝載機(jī)/Autoloader.php的”;Zend_Loader_Autoloader:的getInstance();/定義一些CZ工選項(xiàng)getopt的

33、=新Zend_Console_Getopt的(陣歹U(“withdata|W=與樣本數(shù)據(jù)加載數(shù)據(jù)庫“,ENV|ES=應(yīng)用環(huán)境,為創(chuàng)建數(shù)據(jù)庫(默認(rèn)的發(fā)展)幫助|H=幫助-使用消息“,);嘗試$getopt的-的parse();漁獲(Zend_Console_Getopt_Exception$)/錯(cuò)誤選項(xiàng)通過:報(bào)告使用回聲$E-getUsageMessage();返回false;/如果請(qǐng)求幫助,報(bào)告使用消息$getopt的-getOption(H)呼應(yīng)美元getopt的-getUsageMessage();返回true;/初始化基于CZZ選項(xiàng)的存在或沒有值美元withData=$getopt的-g

34、etOption(“W”);$ENV=$getopt的-getOption(E);定義的(APPLICATION_ENV)|定義(APPLICATION_ENV“,(空=$ENV)?發(fā)展/初始化Zend_Application的應(yīng)用=新Zend_Application(美元APPLICATION_ENVAPPLICATION_PATH/CONFIGS/的application.ini);/初始化和檢索數(shù)據(jù)庫資源弓丨導(dǎo)=$應(yīng)用-getBootstrap();)o/$ENV);為引導(dǎo)-引導(dǎo)(“DB”);525354555657585960616263646566676869707172737475

35、76777879808182838485868788899091美兀dbAdapter=$弓丨導(dǎo)-的getResource(“DB”);/讓用戶知道什么(我們實(shí)際上是創(chuàng)建一個(gè)/數(shù)據(jù)庫在這里)(“測(cè)試”!=APPLICATION_ENV)回聲編寫數(shù)據(jù)庫留言簿(Control-C來取消):。PHP_EOL;($=5;$X0;$X-)回聲$X“R“;睡眠(1);/檢查看到,如果我們有一個(gè)數(shù)據(jù)庫文件已$選項(xiàng)=$引導(dǎo)-getOption(資源);$DBFILE=$選項(xiàng)DB參數(shù)DBNAME;(file_exists($DBFILE)的unlink($DBFILE);/執(zhí)行此塊加載的實(shí)際報(bào)表/模式文件。嘗試

36、schemaSql美兀=file_get_contents(目錄名(FILE)。/schema.sqlite.sql);/使用直接連接到批量加羲的美兀dbAdapter-的getConnection()-EXEC($schemaSql的;CHMOD($DBFILE,0666);(“測(cè)試”!=APPLICATION_ENV)回聲PHP_EOL;回聲數(shù)據(jù)庫創(chuàng)建”;回聲PHP_EOL;($withData)dataSql美元=file_get_contents(目錄名(FILE)。/data.sqlite.sql);/使用直接連接到批量加羲的美元dbAdapter-的getConnection()-

37、EXEC($dataSql)的;(“測(cè)試”!=APPLICATION_ENV)回聲數(shù)據(jù)加載?;芈昉HP_EOL;TOC o 1-5 h z93.的catch(異常$)回聲發(fā)生錯(cuò)誤。PHP_EOL;回聲$E-GETMESSAGE()。PHP_EOL;返回false;99./一般來說,這個(gè)腳本將運(yùn)行命令行返回true;現(xiàn)在,讓我們?cè)趫?zhí)行這個(gè)腳本。從終端或DOS命令行,做到以下幾點(diǎn):1.%PHP腳本/load.sqlite.php的一withdata你應(yīng)該看到類似以下的輸出:路徑/至U/ZendFrameworkQuickstart/腳本PHPload.sqlite.php一withdata編寫數(shù)據(jù)

38、庫留言簿中(Control-C來取消):1數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)加載?,F(xiàn)在我們有一個(gè)完全工作的數(shù)據(jù)庫,為我們的留言申請(qǐng)表。我們接下來的幾個(gè)步驟來構(gòu)建我們的應(yīng)用程序代碼。這包括建立一個(gè)數(shù)據(jù)源(在我們的例子中,我們將使用Zend_Db_Table),數(shù)據(jù)映射,數(shù)據(jù)源連接到我們的域模型。最后,我們還將創(chuàng)建控制器將與現(xiàn)有條目都顯示這個(gè)模型和處理新條目。我們將使用一個(gè)”表數(shù)據(jù)網(wǎng)關(guān)連接到我們的數(shù)據(jù)源;的Zend_Db_Table提供此功能。上手,讓創(chuàng)建的Zend_Db_Table表類。正如我們已經(jīng)完成布局和數(shù)據(jù)庫適配器,我們可以使用ZF的工具,以協(xié)助,使用該命令創(chuàng)建DB表。這需要最低限度的兩個(gè)參數(shù),您要引用的類

39、的名稱,通過它,它映射到數(shù)據(jù)庫表。%ZF創(chuàng)建DB表留言簿留言倉U建一個(gè)應(yīng)用程序/模型/DBTABLE/Guestbook.php的DBTABLE更新工程項(xiàng)目簡介“zfproject.xml在尋找你的目錄樹,你會(huì)看到,創(chuàng)建一個(gè)新的目錄,應(yīng)用程序模型/DBTABLE/,文件Guestbook.php的。如果你打開該文件時(shí),你會(huì)看到以下內(nèi)容:/應(yīng)用程序/模型/DBTABLE/Guestbook.php2.TOC o 1-5 h z/*這是留言表DBTABLE類的。*/類Application_Model_DbTable_Guestbook延伸Zend_Db_Table_Abstract/*表名*/保

40、護(hù)美元的name=留言;10.10.注意類前綴:Notetheclassprefix:Application_Model_DbTable的Application_Model_DbTable。.Theclassprefixforourmodule,Application,isthefirstsegment,andthenwehavethecomponent,Model_DbTable;thelatterismappedtothemodels/DbTable/directoryofthemodule.AllthatistrulynecessarywhenextendingZend_Db_Table

41、istoprovideatablenameandoptionallytheprimarykey(ifitisnotid).NowletscreateaDataMapper.ADataMappermapsadomainobjecttothedatabase.Inourcase,itwillmapourmodel,Application_Model_Guestbook,toourdatasource,Application_Model_DbTable_GuestbookAtypicalAPIforadatamapperisasfollows:/application/models/Guestboo

42、kMapper.php2.3.classApplication_Model_GuestbookMapper4.5.publicfunctionsavei$model);6.publicfunctionfind($id,$model);7.publicfunctionfetchAll();8.Inadditiontothesemethods,welladdmethodsforsettingandretrievingtheTableDataGateway.Tocreatetheinitialclass,usethezfCLItool:%zfcreatemodelGuestbookMapperCre

43、atingamodelatapplication/models/GuestbookMapper.phpUpdatingprojectprofile.zfproject.xmlNow,edittheclassApplication_Model_GuestbookMapperfoundinapplication/models/GuestbookMapper.phptoreadasfollows:/application/models/GuestbookMapper.php2.classApplication_Model_GuestbookMapperTOC o 1-5 h zprotected$_

44、dbTable;6.publicfunctionsetDbTable($dbTable)ifis_string($dbTable)$dbTable=new$dbTable();if(!$dbTableinstanceofZend_Db_Table_Abstract)thrownewException(Invalidtabledatagatewayprovided);14.15.$this-dbTable=$dbTable;16.return$this;17.18.19.publicfunctiongetDbTable()20.21.ifnull=$this-dbTable22.$this-se

45、tDbTable:ApplicationModelDbTableGuestbook);23.24.return$this-dbTable;25.26.27.publicfunctionsave(ApplicationModelGuestbook$guestbook)28.29.$data=array(30.email=$guestbook-getEmail(),ment=$guestbook-getComment(),32.created=date(Y-m-dH:i:s),33.);34.35.if(null=($id=$guestbook-getId()36.unset($dataid);3

46、7.$this-getDbTable()-insert($data);38.else39.$this-getDbTable()-update($data,array(id=?=$id);42.publicfunctionfind($id,Application_Model_Guestbook$guestbook44.45.$result=$this-getDbTable()-find($id);46.if(0=count($result)47.return;48.49.$row=$result-current();50.$guestbook-setId($row-id)51.setEmail(

47、$row-email)52.setComment($row-comment)53.setCreated($row-created);5455565758596061626364656667686970...1011121314151617publicfunctionfetchAll()$resultSet=$this-getDbTable()-fetchAll();$entries=array();foreach($resultSetas$row)$entry=newApplication_Model_GuestbookJ;$entry-setId($

48、row-id)setEmail($row-email)setComment($row-comment)setCreated($row-created);$entries=$entry;return$entries;Nowitstimetocreateourmodelclass.Welldoso,onceagain,usingthezfcreatemodelcommand:%zfcreatemodelGuestbookCreatingamodelatapplication/models/Guestbook.phpUpdatingprojectprofile.zfproject.xmlWellmo

49、difythisemptyPHPclasstomakeiteasytopopulatethemodelbypassinganarrayofdataeithertotheconstructororasetOptions()method.Thefinalmodelclass,locatedinapplication/models/Guestbook.phpshouldlooklikethis:/application/models/Guestbook.phpclassApplication_Model_Guestbookprotected$_comment;protected$_created;p

50、rotected$_email;protected$_id;publicfunctionconstructarray$options=nullif(is_array$options)$this-setOptions($options);publicfunctionset$name,$value$method=set.$name;if(mapper=$name)|!method_exists($this,$method)thrownewException(Invalidguestbookproperty);$this-$method($value);publicfunctionget($name

51、)$method=get.$name;if(mapper=$name)|!method_exists($this,$method)thrownewException(Invalidguestbookproperty);return$this-$method();publicfunctionsetOptions(array$options)$methods=get_class_methods($this);foreach($optionsas$key=$value)$method=set.ucfirst($key);ifin_array($method,$methods)$this-$metho

52、d($value);return$this;publicfunctionsetComment($text)$this-_comment=string$text;return$this;publicfunctiongetComment()return$this-_comment;publicfunctionsetEmail($email)18192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828

53、384858687888990..$this-_email=(string)$email;return$this;publicfunctiongetEmail()return$this-_email;publicfunctionsetCreated($ts)$this-_created=$ts;return$this;publicfunctiongetCreated()return$this-_created;publicfunctionsetId($id)$this-_id=(int$id;return$this;publicfunctiongetId()retu

54、rn$this-_id;Lastly,toconnecttheseelementsalltogether,letscreateaguestbookcontrollerthatwillbothlisttheentriesthatarecurrentlyinsidethedatabase.Tocreateanewcontroller,usethezfcreatecontrollercommand:%zfcreatecontrollerGuestbookCreatingacontrolleratapplication/controllers/GuestbookController.phpCreatinganindexactionmethodincontrollerGuestbookCreatingaviewscriptfortheindexactionmethodatapplication/views/scripts/guestbook/index.phtmlCreatingacontrollertestfileattests/application/controllers/GuestbookControllerTest.phpUpdatingprojectprofile.zfproject.xmlT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論