版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、創(chuàng)建項目為了創(chuàng)建項目,你必須首先下載并解壓縮Zend框架。安裝Zend框架屮相處了一個完整的Zend框架的PHP堆棧最簡單的方法是通過安裝Zend服務(wù)器。Zend服務(wù)器有本地安裝的MacOSX,Windows中的FedoraCore和Ubuntu,以及作為一個普遍的兼容大多數(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框架?;蛘撸梢韵螺d最新版本的Zend框架和提取的內(nèi)容,使你這樣做了說明?;蛘?,您可以將路徑添加到庫/歸檔文件的子目錄到你的php.ini的設(shè)置。這就是它!Zend框架正在安裝,并準(zhǔn)備使用。創(chuàng)建您的項目q注:ZF在您的ZendFramework安裝的命令行工具是一個bin/子目錄中,包含腳本zf.sh和zf.bat,分別為基于UNIX和基于Windows的用戶。使這個腳本的絕對路徑的說明。無論你看到的命令引用ZF,請?zhí)鎿Q腳本的絕對路徑。在類Unix系統(tǒng),你可能想使用shell的別名功能:如果你有問題設(shè)立的ZF命令行工具,請參閱到的別名zfsh=路徑/ZendFramework/BIN/zf
3、sh。手冊。打開一個終端(在Windows中,開始-運(yùn)行,然后使用CMD)。導(dǎo)航到一個目錄,您想啟動一個項目。然后,使用相應(yīng)的腳本路徑,并執(zhí)行下列之一:%ZF創(chuà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-錯誤14.|I-error.phtml15.I-指數(shù)16.I-index.phtml17.I
4、-庫18.I-公共19.II-htaccess的。20.I-的index.php21.-測試22.I-應(yīng)用23.I-bootstrap.php24.I-庫25.I-bootstrap.php26.一phpunit.xml如果你還沒有加入到你的include_pathZend框架,在這一點(diǎn)上,我們建議或者復(fù)制或libg.a連結(jié)到你的庫/目錄。在任何情況下,你想要么遞歸復(fù)制或符號的圖書館/Zend/你的ZendFramework安裝到您的項目庫/目錄的目錄。在類Unix系統(tǒng),這將類似于下列之一:#符號鏈接:%光盤庫;LN-S路徑/ZendFramework/圖書館/Zend的。3.#復(fù)制:光盤庫;
5、CP-R路徑/ZendFramework/圖書館/Zend的。在Windows系統(tǒng)上,它可能是最容易做,從資源管理器?,F(xiàn)在,該項目創(chuàng)建,開始理解的主要構(gòu)件是引導(dǎo),配置,動作控制器和意見。的引導(dǎo)勺您的自舉類定義什么樣的資源和組件初始化。默認(rèn)情況下,初始化Zend框架的前端控制器它使用的應(yīng)用程序控制器默認(rèn)的目錄中尋找行動控制器(稍后)。這個類看起來如下:/應(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)境(例如,把錯誤報告和關(guān)閉),表明引導(dǎo)類路徑(以及它的類名),你的動作控制器的路徑。它看起來如下:;應(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.測試:生產(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ù)直接和擴(kuò)大;APPLICATION_PATH實際上是一個常數(shù)。此外,請注意,有幾個部分定義:生產(chǎn),分期,測試和開發(fā),。后者繼承從生產(chǎn)”環(huán)境設(shè)置。這是一個有用的方式來組織配置,以確保適當(dāng)?shù)脑O(shè)置是在應(yīng)用開發(fā)的每個階段提供。動作控制器F你的應(yīng)用程序的行動控制器包含您的應(yīng)用程序的工作流程,并做您的請求映射到適當(dāng)?shù)哪J胶鸵庖姷墓ぷ?。動作控制器?yīng)在“行動”的結(jié)尾有一個或多個方法,這些方法可能會被要求通過網(wǎng)絡(luò)。默認(rèn)情況下,ZendFramework的網(wǎng)址遵循模式/控制器/行動,“控制器”地圖行動控制器的名稱(減去“控制器”后綴)和“行動”映射到一個動作方法(減行動”的后綴)。通
9、常情況下,你總是需要一個Indexcontroller,這是一個備用的控制器,這也是該網(wǎng)站的主頁,一個Errorcontroller,這是用來顯示HTTP404錯誤(控制器或動作沒有找到)和HTTP500錯誤的東西,如(應(yīng)用程序錯誤)。..9.1011121314..9.1011121314151617181920默認(rèn)Indexcontroller如下:/&用/控制器/IndexController.php的,類IndexControllerZend_Controller_Action的延伸公共初始化函數(shù)()/*初始化動作控制器/公共
10、功能indexAction()/操作的主體和默認(rèn)Errorcontroller如下:/應(yīng)用/控制器/ErrorController.php的,類ErrorcontrollerZend_Controller_Action的延伸公共的功能errorAction()$錯誤=$一_getParam(“error_handler);開關(guān)(錯誤-類型)情況ZendControllerPluginErrorHandler:EXCEPTIONNOROUTE情況ZendControllerPluginErrorHandler:EXCEPTIONNOCONTROLLER情況ZendControllerPlugin
11、ErrorHandler:EXCEPTIONNOACTION/404錯誤-控制器或行動沒有發(fā)現(xiàn)-的GetResponse()-setHttpResponseCode(404);$這個-視圖-消息=頁面沒有找到;打破;默認(rèn)情況下:/應(yīng)用程序錯誤21222324252627282..9.1011121314151617-的GetResponse()-setHttpResponseCode(500);-視圖-消息=應(yīng)用程序錯誤;打破;視圖-例外=$錯誤-異常;視圖-請求=$失誤-請求;你會注意到:(1)的Indexcontroller包含沒有真正的代碼,和(2)Erro
12、rcontroller參考“意見”屬性。這導(dǎo)致很好地融入我們的下一個主題。寫在普通的舊的PHPZend框架的意見。查看腳本放置在應(yīng)用程序意見腳本/,在那里他們進(jìn)一步分類使用的控制器名稱。在我們的例子中,我們有Indexcontroller和Errorcontroller,因此,我們有相應(yīng)的索弓/錯誤/在我們的視圖腳本目錄的子目錄。這些子目錄內(nèi),你就會發(fā)現(xiàn)和創(chuàng)建視圖腳本對應(yīng)每個控制器的行動暴露在默認(rèn)情況下,因此我們有視圖腳本索弓/的index.phtml和錯誤/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;溢出:隱臧;文本對齊:中心;TOC o 1-5 h z25.格#更多信息背景圖像:網(wǎng)址(HTTP:/圖像/bkg_body的-bottom.gif);身高:100%;31./STYLEdiv的id=歡迎歡迎跨度ID=“ZF-名稱Zend框架!/SPAN這是你的項目的
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.手冊/A46./P47./DIV48./DIV49.=span=style=color:rgb(255,0,0);錯誤/error.pht視圖腳本是稍微更有趣,因為它使用一些PHP的條件: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ā)生錯誤PHP?呼應(yīng)$這個-消息?H3異常信息:/H3Pb郵件:?PHP呼應(yīng)$這個-例夕卜-GETMESSAGE()?/PH3堆棧跟蹤:PRE?PHP呼應(yīng)$這個一
16、例夕卜一getTraceAsString()?H3請求參數(shù):PRE/HTML創(chuàng)建一個虛擬主機(jī)對于這種快速啟動的目的,我們將假定您正在使用ApacheWeb服務(wù)器。Zend框架與其他Web服務(wù)器-包括MicrosoftInternet信息服務(wù)器的lighttpd,nginx的,更完美-但大多數(shù)開發(fā)商應(yīng)在最低阿帕奇famililar,它提供了一個簡單的介紹ZendFramework的目錄結(jié)構(gòu)和重寫能力。要創(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被定義,通常情況下,你會設(shè)置它的值為“80”。二,定義一個虛擬主機(jī):的ServerNamequickstart.localDocumentRoot的路徑/快速啟動/公共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)志樣式浮動:左ZF快速啟動應(yīng)用/DIVdiv的id=標(biāo)題導(dǎo)航=浮動權(quán)|ahref=?PHP的echo$這個-URL(陣列(控制器=留言),默認(rèn),真實的)?在線留言/A/DIV/DIV元素,以及保持整個應(yīng)用程序的軌道。如果你需要添加額外的CSS表,以支持一個單一的行動,你可以這樣做,并保證這將是目前在最終渲染的頁面。注:邊檢站立即去“的http:/localhost”,并檢查了源。你應(yīng)該看到你的XHTML頭,頭
20、,標(biāo)題,和身體部分。創(chuàng)建一個模型和數(shù)據(jù)庫表在我們開始之前,讓我們考慮的東西:這里將這些類的生活,我們將如何找到他們呢?創(chuàng)建默認(rèn)項目中,我們實例化一個自動加載磁帶機(jī)。我們可以附加其他的自動裝載機(jī),以便它知道在哪里可以找到不同的類。通常情況下,我們希望我們的各種MVC類分組在同一棵樹下-在這種情況下,應(yīng)用程序/-和最經(jīng)常使用一個共同的前綴。..9.101112131415161718192021222324252627282930Zend_Controller_Front有一個模塊,這是個人的迷你應(yīng)用程序的概念。模塊模仿,ZF工具應(yīng)用/下建立目錄結(jié)構(gòu),并在他們里面所有的
21、類都假定有一個共同的前綴,模塊名稱開始。應(yīng)用/本身就是一個模塊-“默認(rèn)”或“應(yīng)用程序”模塊。正因為如此,我們將要為這個目錄內(nèi)的資源設(shè)置自動裝填。Zend_Application_Module_Autoloader提供所需的各種資源的映射下,以適當(dāng)?shù)哪夸浤K的功能,以及提供一個標(biāo)準(zhǔn)的命名機(jī)制。默認(rèn)情況下創(chuàng)建類的一個實例,引導(dǎo)對象的初始化過程中,將默認(rèn)使用您的應(yīng)用程序引導(dǎo)模塊的前綴“應(yīng)用程序”。正因為如此,我們的模型,表格,表類,將所有與類前綴Application的開始?,F(xiàn)在,讓我們的考慮是什么使留言板。通常情況下,它們僅僅是注釋,時間戳并經(jīng)常,電子郵件地址的一個條目清單。假設(shè)我們存儲在數(shù)據(jù)庫中
22、,我們可能還需要一個獨(dú)特的標(biāo)識,為每個條目。我們可能會希望能夠保存條目,取個別條目,檢索所有條目。正因為如此,-個簡單的留言模型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ī)制,為我們訪問個別項目的性質(zhì),并代理其他getter和setter。他們也將有助于確保我們的白名單的唯一屬性將對象。找到()和fetchAll()提供的能力,以獲取一個條目或所有條目,同時保存()節(jié)約數(shù)據(jù)存儲的條目?,F(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”測試用于生產(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)用程序,在這里你會看到在適當(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.測試:生產(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)測試:生產(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請注意,數(shù)據(jù)庫(S)將在存儲數(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)上,我們有一個數(shù)據(jù)庫連接,在我們的例子中,它連接到一個SQLite數(shù)據(jù)庫位于內(nèi)我們的應(yīng)用程序數(shù)據(jù)/目錄。所以,讓我們設(shè)計一個簡單的表格,將舉行我們的留言簿條目。-腳本/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評論文字為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、你好!希望你享受這個范例ZF應(yīng)用程序!“的DATETIME(現(xiàn)在);INSERT到留言(電子郵件,注釋,創(chuàng)建)值(“foo,巴茲巴茲巴茲,巴茲巴茲巴茲巴茲BAZ-BAZ巴茲巴茲。的DATETIME(現(xiàn)在);現(xiàn)在,我們有兩個架構(gòu)和定義一些數(shù)據(jù)。讓我們一起得到一個腳本,我們現(xiàn)在可以執(zhí)行建立這個數(shù)據(jù)庫。當(dāng)然,這并不需要在生產(chǎn),但這個腳本將幫助開發(fā)人員建立了本地數(shù)據(jù)庫的要求,使他們能夠有充分工作的應(yīng)用程序。創(chuàng)建含有下列內(nèi)容的腳本/load.sqlite.php的腳本:/腳本/load.sqlite.php的2./*創(chuàng)建和裝載數(shù)據(jù)庫的腳本*/6./初始化應(yīng)用程序的路徑和自動裝填定義的(APPLICATI
32、ON_PATH)9.101112131415161718192021222324252627282930313233343536373839404142434445464748495051|定義(APPLICATION_PATH“,真實路徑(目錄名(FILE_應(yīng)用程序。“);set_include_path破滅(PATH_SEPARATOR,陣歹U(APPLICATION_PATH。/。/庫“,get_include_path();的Zend/裝載機(jī)/Autoloader.php的”;Zend_Loader_Autoloader:的getInstance();/定義一些CZ工選項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$)/錯誤選項通過:報告使用回聲$E-getUsageMessage();返回false;/如果請求幫助,報告使用消息$getopt的-getOption(H)呼應(yīng)美元getopt的-getUsageMessage();返回true;/初始化基于CZZ選項的存在或沒有值美元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”);/讓用戶知道什么(我們實際上是創(chuàng)建一個/數(shù)據(jù)庫在這里)(“測試”!=APPLICATION_ENV)回聲編寫數(shù)據(jù)庫留言簿(Control-C來取消):。PHP_EOL;($=5;$X0;$X-)回聲$X“R“;睡眠(1);/檢查看到,如果我們有一個數(shù)據(jù)庫文件已$選項=$引導(dǎo)-getOption(資源);$DBFILE=$選項DB參數(shù)DBNAME;(file_exists($DBFILE)的unlink($DBFILE);/執(zhí)行此塊加載的實際報表/模式文件。嘗試
36、schemaSql美兀=file_get_contents(目錄名(FILE)。/schema.sqlite.sql);/使用直接連接到批量加羲的美兀dbAdapter-的getConnection()-EXEC($schemaSql的;CHMOD($DBFILE,0666);(“測試”!=APPLICATION_ENV)回聲PHP_EOL;回聲數(shù)據(jù)庫創(chuàng)建”;回聲PHP_EOL;($withData)dataSql美元=file_get_contents(目錄名(FILE)。/data.sqlite.sql);/使用直接連接到批量加羲的美元dbAdapter-的getConnection()-
37、EXEC($dataSql)的;(“測試”!=APPLICATION_ENV)回聲數(shù)據(jù)加載?;芈昉HP_EOL;TOC o 1-5 h z93.的catch(異常$)回聲發(fā)生錯誤。PHP_EOL;回聲$E-GETMESSAGE()。PHP_EOL;返回false;99./一般來說,這個腳本將運(yùn)行命令行返回true;現(xiàn)在,讓我們在執(zhí)行這個腳本。從終端或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ù)加載。現(xiàn)在我們有一個完全工作的數(shù)據(jù)庫,為我們的留言申請表。我們接下來的幾個步驟來構(gòu)建我們的應(yīng)用程序代碼。這包括建立一個數(shù)據(jù)源(在我們的例子中,我們將使用Zend_Db_Table),數(shù)據(jù)映射,數(shù)據(jù)源連接到我們的域模型。最后,我們還將創(chuàng)建控制器將與現(xiàn)有條目都顯示這個模型和處理新條目。我們將使用一個”表數(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表。這需要最低限度的兩個參數(shù),您要引用的類
39、的名稱,通過它,它映射到數(shù)據(jù)庫表。%ZF創(chuàng)建DB表留言簿留言倉U建一個應(yīng)用程序/模型/DBTABLE/Guestbook.php的DBTABLE更新工程項目簡介“zfproject.xml在尋找你的目錄樹,你會看到,創(chuàng)建一個新的目錄,應(yīng)用程序模型/DBTABLE/,文件Guestbook.php的。如果你打開該文件時,你會看到以下內(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色環(huán)保型農(nóng)村房屋修建合同2篇
- 二零二五年度公司股權(quán)轉(zhuǎn)讓與品牌授權(quán)合同3篇
- 二零二五年度航空貨運(yùn)公司駕駛員聘用合同協(xié)議書3篇
- 2024年中國特重潤滑油市場調(diào)查研究報告
- 2024年中國燃燒效率分析儀市場調(diào)查研究報告
- 2025年度農(nóng)產(chǎn)品電商平臺合作伙伴招募與管理合同3篇
- 2024年塑料掃帚頭項目可行性研究報告
- 2024年地面旋轉(zhuǎn)煙花項目可行性研究報告
- 《基于ANSYS-LS-DYNA的齒輪故障特性仿真分析》
- 2024年全自動識別分析紅外信號譯碼器項目可行性研究報告
- 2024中考語文《水滸傳》歷年真題(解析版)
- 接地電阻測試儀的操作課件
- 《機(jī)修工基礎(chǔ)培訓(xùn)》課件
- 品質(zhì)黃燜雞加盟活動策劃
- DLT 754-2013 母線焊接技術(shù)規(guī)程
- 部編版小學(xué)道德與法治五年級上冊單元復(fù)習(xí)課件(全冊)
- 仙桃市仙桃市2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)檢測卷(含答案)
- 智慧農(nóng)場整體建設(shè)實施方案
- 航空公司個人年終總結(jié)(共12篇)
- 產(chǎn)品供貨方案、售后服務(wù)方案
- 蘇教版小學(xué)數(shù)學(xué)六年級上冊第4單元解決問題的策略重難點(diǎn)練習(xí)【含答案】
評論
0/150
提交評論