• <menu id="w2i4a"></menu>
  • logo PHP框架/PHP IDE系列

    文檔首頁>>PHP框架/PHP IDE系列>>談?wù)勅顝V泛使用的PHP 框架

    談?wù)勅顝V泛使用的PHP 框架


    模型框架

    在了解哪些框架被選中之前,有必要來討論一下框架是什么。

    框架思想就是提供一種可以在多個應(yīng)用程序中使用的設(shè)計。所有應(yīng)用程序都有大量通用的基本內(nèi)容 —— 具體地說,就是某類與數(shù)據(jù)庫的接口、某些應(yīng)用程序邏輯、應(yīng)用程序呈現(xiàn)給用戶的內(nèi)容等。如果您編寫過許多 PHP 應(yīng)用程序,則會知道這些基本內(nèi)容是什么。您可能已經(jīng)編寫過一組函數(shù)或從數(shù)據(jù)庫中讀取數(shù)據(jù)和向數(shù)據(jù)庫中寫入數(shù)據(jù)的類,可能已經(jīng)使用過諸如 Smarty 之類的模板引擎來管理 UI。而且一定編寫過大量 PHP 代碼來完成諸如分析表單提交并根據(jù)提交的數(shù)據(jù)作決定之類的事務(wù)。如果您已經(jīng)編寫過很多應(yīng)用程序,則可能已經(jīng)一次又一次地做過相同的基本工作,有時還會將一個應(yīng)用程序中的代碼借用到另一個應(yīng)用程序中。

    框架專門用于為這些常用元素(數(shù)據(jù)庫交互、表示層、應(yīng)用程序邏輯)提供結(jié)構(gòu),以便您可以花費(fèi)更少的時間來編寫數(shù)據(jù)庫接口代碼或者表示層接口,而花費(fèi)更多的時間來編寫應(yīng)用程序本身。以這種方式分解應(yīng)用程序,這種架構(gòu)被稱為模型-視圖-控制器(Model-View-Controller,MVC)。模型 指數(shù)據(jù),視圖 指表示層,而控制器 指應(yīng)用程序邏輯或業(yè)務(wù)邏輯。對 MVC 的完整討論超出本文的范圍,但是鼓勵您研究 MVC 并深入了解 MVC 的一切(請參閱 參考資料)。

    選擇框架

    每種語言幾乎都有若干個框架可用。選擇剛好滿足需求的框架可能有點(diǎn)難,尤其是當(dāng)您以前未曾使用過任何一個框架時更是如此。雖然熟悉此領(lǐng)域的同事和可信賴的 developerWorks 作者提供的建議和評價會十分有幫助,但是選擇任何框架時實際上應(yīng)當(dāng)遵循的惟一一個指導(dǎo)原則是:框架為每個人 節(jié)省的時間和精力越多越好。如果一個框架工作得很好但是會導(dǎo)致產(chǎn)生大量支持調(diào)用,那就不是一個優(yōu)秀框架。如果一個框架易于支持,但是起到的阻礙作用大于輔助開發(fā)作用,那也不是一個優(yōu)秀框架。如果一個框架十分優(yōu)雅,但是會導(dǎo)致出現(xiàn)支持問題和開發(fā)問題,那么這個框架也是沒有用的。

    選擇項目框架時,考慮從上到下所有相關(guān)人員的意見,并且在評估框架時,考慮到對其他各方的影響。

    當(dāng)考慮采用一個框架時,請進(jìn)一步審視您的應(yīng)用程序,并思考該應(yīng)用程序是不是需要一個框架??蚣懿皇潜匦杵?。即使不使用框架,也可以繼續(xù)編寫企業(yè)應(yīng)用程序??蚣軙椖坑袔椭??它是否會節(jié)省每個人的時間和精力?您的應(yīng)用程序在框架中是否會執(zhí)行得更好?它是否將提供所缺乏的穩(wěn)定性?如果上面任意一個問題的答案為是,那么您應(yīng)當(dāng)考慮采用框架。如果所有這些問題的答案都為否,那么使用框架只會把事情變復(fù)雜。

    可惜,本文的長度和范圍限制不允許全面介紹所有可用的 PHP 框架。本系列主要介紹三個框架:

    • Zend 框架
    • symfony
    • CakePHP

    選擇這些框架的原因有很多,但可能都屬于這幾類因素:“您老板聽說過的框架”、“某些人已經(jīng)安裝過的框架” 或者 “曾經(jīng)談?wù)撨^的框架”。我鼓勵您研究 CodeIgniter、Seagull、Web Application Component Toolkit (WACT)、PRADO、Zoop、PHP on Trax 或者其他眾多可用 PHP 框架中的一個。框架選擇全憑個人喜好,就像選擇用哪種語言編寫代碼一樣。本系列不會告訴您哪個框架比其他框架更好或更差。哪個框架在某方面做得好,我們就會討論它。哪個框架看上去不實用,我們也會討論它。即使我們不能全面地涵蓋各種框架,我們采用的方法也將幫助您學(xué)會衡量其他框架的優(yōu)點(diǎn)和缺點(diǎn)。您需要對正在檢驗的框架形成自己的觀點(diǎn),哪些框架您喜歡,并且決定繼續(xù)使用哪個框架。

    Zend 框架

    所有人都知道 Zend —— “PHP 公司”。當(dāng)您下載和安裝 PHP 時,從大約 V3 開始,您就是在從 Zend 下載 PHP。除了發(fā)布 PHP 之外,Zend Technologies 多年來已經(jīng)提供了大量 PHP 支持技術(shù)。Zend 提供適用于 PHP 的框架應(yīng)當(dāng)不稀奇 —— 這是一個到現(xiàn)在為止已經(jīng)有兩百萬下載次數(shù)的流行框架。如果您老板聽說過 PHP 框架,那么很可能指的就是 Zend 框架。

    symfony

    由 Sensio 贊助的 symfony “旨在提高創(chuàng)建和維護(hù) Web 應(yīng)用程序的速度,以及用功能、控制和愉悅來替代重復(fù)性的編碼任務(wù)”。symfony 框架已經(jīng)在世界各地的許多企業(yè)級應(yīng)用程序中使用,其中可能包括最著名的 Askeet 和 Yahoo! 書簽。如果您認(rèn)識的某個人安裝、使用或玩轉(zhuǎn)某個 PHP 框架,那么該框架很可能就是 symfony。

    CakePHP

    CakePHP 大部分源自 Ruby on Rails,它旨在把簡單性和可伸縮性引入到 PHP 框架中。CakePHP 一直被視為頂級 PHP 框架,并且 PHP V5 最近被選作 Mambo Content Management System 的核心。受強(qiáng)大的社區(qū)及快速增長的用戶庫推動,CakePHP 的受歡迎程度正在穩(wěn)步增加。如果您曾聽到過關(guān)于 PHP 框架的討論,那么該討論可能就是關(guān)于 CakePHP 的。

    安裝

    每個框架都有自己的一組安裝說明,并且完整的安裝細(xì)節(jié)超出本文的范圍。本文將重點(diǎn)說明這三個框架的安裝,突出每個單獨(dú)框架的安裝說明里可能未涉及的要點(diǎn),或者需要有別于安裝說明的內(nèi)容,因為將全部三個框架安裝到一臺計算機(jī)上十分特殊。

    首先創(chuàng)建一個文件夾來保存所有代碼、框架并包括本系列需要的內(nèi)容(例如,名為 /column 的目錄)。在此目錄中,創(chuàng)建四個附加目錄:htdocs、protected、include 和 src。編輯 Apache conf 文件,使文檔根目錄指向 /column/htdocs —— 然后當(dāng)您處于該目錄中時(如果尚不在其中),應(yīng)當(dāng)啟用 mod_rewrite。編輯 php.ini conf 文件使 /column/include/ 目錄包含在 include_path 指令中。如果您還沒明白所有這些操作的意義,請不要著急。當(dāng)您安裝框架時,一切都會變得清晰。

    安裝 Zend 框架

    下載 Zend 框架(請參閱 參考資料)。本系列使用的是 V1.0.1。下載并將 Zend 框架解壓縮到 /column/src 目錄中。該發(fā)行版將包含若干個文本文件和三個目錄:demos、tests 和 library。把庫目錄(這應(yīng)當(dāng)只是名為 Zend 的文件夾)的內(nèi)容復(fù)制到 /column/include/ 目錄中?,F(xiàn)在應(yīng)當(dāng)有包含若干個目錄和文件的名為 /column/include/Zend 的文件夾。這些是 Zend 框架所使用的庫。

    好的!您已經(jīng)安裝了 Zend 框架。

    安裝 symfony

    下載 symfony(請參閱 參考資料)。您可以通過下載頁面中列出的任意一種方法隨意安裝 symfony,但是出于我們的目的建議下載 tarball。將 tarball 解壓縮到 /column/src/symfony/ 目錄中。您應(yīng)當(dāng)會看到四個目錄(data、doc、lib 和 licenses),以及一些 README 文檔。對于安裝完成的應(yīng)用程序來說,并不是所有的這些文檔和目錄都是必需的,但是現(xiàn)在,有這些文檔和目錄是可以的。對于安裝來說,看上去可能過于簡單。一定要記住,這些框架一般都是由實用程序和庫組成的,因此安裝框架并不難。使用框架需要執(zhí)行一些追加配置。稍后您就將清楚如何配置。

    安裝 CakePHP

    下載 CakePHP(請參閱 參考資料)。本系列使用的是 1.2.0.5427alpha 版本。不管是不是成熟的 alpha 版本,CakePHP 的 1.2 分支已經(jīng)成為 CakePHP 社區(qū)廣泛接受的標(biāo)準(zhǔn)。下載并解壓縮 tarball,將其內(nèi)容放到 /column/src/cakephp 中。應(yīng)當(dāng)?shù)玫剿膫€目錄(app、cake、doc 和 vendors)以及兩個文件(.htaccess 和 index.php)。稍后將對這些文件中的一些文件進(jìn)行操作,不過現(xiàn)在這樣就可以了。

    測試應(yīng)用程序

    您已經(jīng)下載并安裝了三個框架。但是您可能已經(jīng)注意到自己尚未用這三個框架執(zhí)行任何實際操作,例如用 Hello World 應(yīng)用程序檢驗安裝。那是因為您要跳過 Hello World 并轉(zhuǎn)到較深入(但不會非常深入)的內(nèi)容中。

    在 PHP 框架中構(gòu)建 Hello World 應(yīng)用程序可能會有點(diǎn)痛苦。使用框架需要花費(fèi)一定的系統(tǒng)開銷,并且該系統(tǒng)開銷發(fā)生在您嘗試創(chuàng)建諸如 Hello World 等簡單內(nèi)容時。但是,在處理更復(fù)雜的應(yīng)用程序時,同樣的系統(tǒng)開銷看上去則成為合理的支出。

    您將構(gòu)建的測試應(yīng)用程序并不復(fù)雜。該測試應(yīng)用程序?qū)⒃试S您使用文本區(qū)域把文本粘貼到應(yīng)用程序中。該文本將被保存到數(shù)據(jù)庫中并在請求時由該應(yīng)用程序檢索來顯示。使用這樣一個應(yīng)用程序,您將可以輕松地創(chuàng)建和更新 Web 站點(diǎn)中的內(nèi)容,而無需編輯 HTML 或上傳新文件。這種高度創(chuàng)新并使用新方法的應(yīng)用程序?qū)⒈环Q為 Blahg。

    Blahg 怎樣使用?

    根據(jù) Blahg 的描述,您可能已經(jīng)推斷出如何設(shè)計應(yīng)用程序需要考慮的幾個方面。Blahg 需要四個元素:

    1. 包含表單的頁面 —— 此表單至少要包含一個文本區(qū)域。此頁面將是寫入頁面。
    2. 讀取粘貼內(nèi)容的頁面 —— 此頁面將需要被傳遞給某種 post 標(biāo)識符。此頁面將是讀取頁面。
    3. 列出可用粘貼內(nèi)容的頁面 —— 此頁面將是索引頁面。
    4. 保存粘貼內(nèi)容的數(shù)據(jù)庫表 —— 這張表至少需要保存粘貼的文本和 post 標(biāo)識符,還可能保存 Post 標(biāo)題和粘貼內(nèi)容的最后一次修改日期。

    很明顯,Blahg 可以比現(xiàn)在更健壯,并且稍后在本系列中,您將執(zhí)行一些增強(qiáng)工作。但是現(xiàn)在,滿足這些簡單要求就足夠。可惜的是,您現(xiàn)在還不能獲得在任意一個框架中構(gòu)建 Blahg 的機(jī)會。那要在第 2 部分中進(jìn)行。但是現(xiàn)在是設(shè)置您將使用的數(shù)據(jù)庫的最佳時機(jī)。

    設(shè)置數(shù)據(jù)庫

    在可以實際構(gòu)建 Blahg 之前,需要設(shè)置數(shù)據(jù)庫。并不是每個單獨(dú)框架都必須設(shè)置數(shù)據(jù)庫,但是出于本系列的學(xué)習(xí)目的,這樣做將使事情變得更有序,同時可以避免必需的表前綴。

    創(chuàng)建三個名為 Zend、symfony 和 Cake 的數(shù)據(jù)庫,并將對每個數(shù)據(jù)庫的全部權(quán)限授權(quán)給相應(yīng)的用戶。下面每個框架的指令都將包含創(chuàng)建 posts 表必需的 SQL。

    擺弄數(shù)據(jù)庫的同時,您也可以創(chuàng)建 Blahg 將在開頭使用的表。使用以下 SQL 在 Zend 和 symfony 數(shù)據(jù)庫中創(chuàng)建 posts 表。

    清單 1. 在 Zend 和 symfony 中創(chuàng)建 posts 表

    CREATE TABLE 'posts' (
    'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    'title' VARCHAR( 255 ) NOT NULL ,
    'text' TEXT NOT NULL ,
    'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    ) ENGINE = MYISAM ;

    清單 2. 在 CakePHP 中創(chuàng)建 posts 表

    CREATE TABLE 'posts' (
    'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    'title' VARCHAR( 255 ) NOT NULL ,
    'text' TEXT NOT NULL ,
    'modified' DATETIME DEFAULT NULL
    ) ENGINE = MYISAM ;
    

    轉(zhuǎn)載自IBM!

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();