FleaPHP并不是心血來潮的結(jié)果,而是作者在Web開發(fā)中不斷探索的成果。雖然FleaPHP缺乏ZendFramework那樣巨大的號(hào)" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

關(guān)于 FleaPHP

系統(tǒng) 2283 0
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
FleaPHP 并不是心血來潮的結(jié)果,而是作者在 Web 開發(fā)中不斷探索的成果。雖然 FleaPHP 缺乏 Zend Framework 那樣巨大的號(hào)召力,也沒有 CakePHP 和 Symfony 那樣龐大的社區(qū)。但 FleaPHP 仍然是一個(gè)值得你花時(shí)間去了-解、去學(xué)習(xí)的框架。

FleaPHP 的設(shè)計(jì)目標(biāo)

FleaPHP 致力于減少開發(fā)者創(chuàng)建 Web 應(yīng)用程序的工作量,并降低開-發(fā)難度和強(qiáng)度,提高開發(fā)效率。

  • 快速、輕量級(jí),避免臃腫的結(jié)-構(gòu)帶來的性能損失

    由于 PHP 是解釋執(zhí)行,如果花費(fèi)太多資-源在框架本身,顯然不適合的。就像一臺(tái)計(jì)算機(jī)如果把-大量的資源都花在操作系統(tǒng)上了,而應(yīng)用程序能夠得到-的資源卻少得可憐,顯然是無法讓用戶接受的。

  • 可擴(kuò)展、開放性的架構(gòu),允許-開發(fā)者引入自己的組件或者任何成熟的工具庫(kù)

    框架雖然提供了許多組件,但-不可能完全滿足用戶的需求。因此,框架本身應(yīng)該是松-散耦合、可擴(kuò)展的。開發(fā)者可以很簡(jiǎn)單的為框架加入新-的組件。同時(shí),框架的逐步發(fā)展也不應(yīng)該影響框架的核-心基礎(chǔ)。最后,開放性的架構(gòu)讓開發(fā)者在框架中引入其-他組件或者工具庫(kù)時(shí)不會(huì)遇到任何困難。例如開發(fā)者可-能會(huì)使用 Smarty 來做模板引擎,以及 PEAR 中的一些庫(kù)來簡(jiǎn)化開發(fā)工作。

  • 盡可能少的契約,但同時(shí)提供-足夠的自動(dòng)化能力,減輕開發(fā)強(qiáng)度

    雖然契約式編程,可以讓框架-本身的設(shè)計(jì)變得更簡(jiǎn)單,開發(fā)者也能從框架獲得更多的-幫助。但太過嚴(yán)格的規(guī)則和約定會(huì)明顯降低框架的適應(yīng)-性,為此需要對(duì)兩者進(jìn)行適當(dāng)?shù)钠胶?。Fle-aPHP設(shè)計(jì)時(shí)采用盡可能少的-契約,通過更復(fù)雜的實(shí)現(xiàn)來實(shí)現(xiàn)一些自動(dòng)化能力?;蛘?以最少量的配置信息來幫助框架為開發(fā)者提供服務(wù)。

  • 高度靈活的解決方案,提供開-發(fā)應(yīng)用程序的大多數(shù)基本組件

    雖然現(xiàn)在已經(jīng)有許許多多出色-的工具庫(kù)可供選擇。但對(duì)于一些平常的需求來說,這些-工具庫(kù)可能具有過度殺傷能力(也就是說工具庫(kù)本身提-供了遠(yuǎn)遠(yuǎn)超過需求的功能)。由此帶來了學(xué)習(xí)難度增大-、性能降低等問題。為此,F(xiàn)le-aPHP 框架提供了一組輕量級(jí)的基本-組件。這些組件被設(shè)計(jì)為擁有基本的功能和可擴(kuò)展。 例如 FleaPHP 附帶的基于角色的權(quán)限驗(yàn)證組件雖然不如 phpGACL 這樣的庫(kù)功能強(qiáng)大,但卻能夠-解決平常開發(fā)都會(huì)遇到的典型權(quán)限驗(yàn)證問題,并允許開-發(fā)者自行擴(kuò)展這個(gè)組件。


FleaPHP 的主要特征

除了 MVC 模式實(shí)現(xiàn)、Dispatcher 調(diào)度器、模板引擎等常見功能-外,F(xiàn)leaPHP 框架還擁有許多獨(dú)一無二的特點(diǎn):

  • 簡(jiǎn)單、容易理解的 MVC 模型

    不像其他流行的框架,F(xiàn)leaPHP 提供的 MVC 模型注重簡(jiǎn)單和容易理解。例如 FleaPHP 不要求開發(fā)者從特定的類派生-自己的控制器類和業(yè)務(wù)模型類。

  • 易于使用、高度自動(dòng)化的數(shù)據(jù)庫(kù) CRUD 操作

    FleaPHP 采用 TableDataGateway 設(shè)計(jì)模式來封裝數(shù)據(jù)表操作。-FLEA_Db_Table-DataGateway 類不但提供了容易使用的 CRUD 操作,還實(shí)現(xiàn)了數(shù)據(jù)表之間的-關(guān)聯(lián)操作。同時(shí),F(xiàn)leaP-HP 沒有像其他框架那樣將每一行-記錄都封裝為一個(gè)對(duì)象(毫無疑問這會(huì)產(chǎn)生明顯的性能-問題),而是利用 PHP 強(qiáng)大的數(shù)組來保存和傳遞數(shù)據(jù)。

  • 盡可能少的配置

    雖然像數(shù)據(jù)庫(kù)聯(lián)接信息等配置-仍然是不可少的,但 FleaPHP 應(yīng)用程序通常只需要設(shè)置幾個(gè)-選項(xiàng),即可在各種環(huán)境中運(yùn)行良好。而且 FleaPHP 的所有設(shè)置都采用 PHP 數(shù)組來保存,不但容易理解,-而且省掉了解析、緩存等不必要的過程,提高了性能。

  • 高度可配置能力

    雖然 FleaPHP 自動(dòng)化程度很高,但 FleaPHP 同時(shí)也擁有高度的可配置能力。通過覆蓋 FleaPHP 默認(rèn)的選項(xiàng),開發(fā)者可以獲得-最大程度的靈活性。讓開發(fā)者可以在適應(yīng)現(xiàn)有代碼、保-持開發(fā)習(xí)慣等各方面獲得好處。

  • 自動(dòng)化的數(shù)據(jù)驗(yàn)證和轉(zhuǎn)義

    即便不做任何處理,程序?qū)?shù)據(jù)通過 FLEA_Db_Table-DataGateway 提交到數(shù)據(jù)庫(kù)前。FleaPHP 也會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,并-轉(zhuǎn)義特殊字符,最大程度消除 SQL 注入攻擊。

  • 豐富的助手對(duì)象和組件

    FleaPHP 附帶了一些非常實(shí)用的助手對(duì)-象,從生成圖像驗(yàn)證碼、處理 文件上傳 到通用數(shù)據(jù)驗(yàn)證-等。這些助手對(duì)象大多是一些獨(dú)立的對(duì)象,完全不依賴于 FleaPHP 框架本身。因此開發(fā)者不但可以在 FleaPHP 之外使用這些助手對(duì)象,也可-以方便的加入自己的助手對(duì)象。 組件是比助手對(duì)象更為復(fù)雜的-可重用單元。這些組件包括基于角色的用戶管理、腳手-架等。利用這些組件,開發(fā)者可以很快的完成一些常見-任務(wù),并能在這些組件基礎(chǔ)上擴(kuò)展出功能更復(fù)雜的組件。

  • 與 Smarty 集成

    只需要修改幾個(gè)選項(xiàng),F(xiàn)leaPHP 應(yīng)用程序就可以和流行的 Smarty 模版引擎集成。

  • 100% FREE

    當(dāng)然,最后一點(diǎn)就是 FleaPHP 是一個(gè)完全開放源代碼和文檔-(不是那種滑稽的刪除了所有注釋僅能運(yùn)行的代碼)、-不限制使用的項(xiàng)目。你可以自由的學(xué)習(xí)、使用 FleaPHP,也可以在自己的應(yīng)用-程序中使用 FleaPHP。不管你的應(yīng)用程序是-否是商業(yè)應(yīng)用,都不需要公開你的源代碼,從最大程度-上保護(hù)了你的知識(shí)產(chǎn)權(quán)。不過如果你愿意將代碼反饋到-社區(qū),那么大家都會(huì)感謝你。

請(qǐng)記住,F(xiàn)leaPHP 是一個(gè)持續(xù)發(fā)展的框架,隨時(shí)-有新特性被加入到框架中。你現(xiàn)在需要,但 FleaPHP 尚未提供的功能,也許不久以后就出現(xiàn)在 FleaPHP 中了。當(dāng)然,這需要你積極參與 FleaPHP 的發(fā)展,提出你的建議和意見。


自由的 FleaPHP

FleaPHP 是一個(gè)遵循 BSD 協(xié)議發(fā)布的開放源代碼應(yīng)用程-序開發(fā)框架。你可以免費(fèi)獲取 FleaPHP 框架,并應(yīng)用到自己的開發(fā)工-作中。與流行的 GPL 協(xié)議不同,F(xiàn)leaPHP 遵循的 BSD 協(xié)議不要求開發(fā)者將基于 FleaPHP 框架開發(fā)的應(yīng)用程序公布于眾-。這很好的保護(hù)了開發(fā)者及其所屬企業(yè)的利益。更進(jìn)一-步,即便你基于 FleaPHP 實(shí)現(xiàn)了自己的產(chǎn)品或者對(duì) FleaPHP 進(jìn)行了修改以滿足自己的需求-。你仍然不需要公布你的勞動(dòng)成果。

下面是關(guān)于 BSD 協(xié)議的簡(jiǎn)單介紹:

BSD 開源協(xié)議是一個(gè)給于使用者很-大自由的協(xié)議??梢宰杂傻氖褂茫薷脑创a,也可以-將修改后的代碼作為開源或者專有軟件再發(fā)布。當(dāng)你發(fā)-布使用了 BSD 協(xié)議的代碼,或者以 BSD 協(xié)議代碼為基礎(chǔ)做二次開發(fā)自-己的產(chǎn)品時(shí),需要滿足三個(gè)條件:

  • 如果再發(fā)布的產(chǎn)品中包含源代-碼,則在源代碼中必須帶有原來代碼中的 BSD 協(xié)議。
  • 如果再發(fā)布的只是二進(jìn)制類庫(kù)-/軟件,則需要在類庫(kù)/軟件的文檔和版權(quán)聲明中包含-原來代碼中的 BSD 協(xié)議。
  • 不可以用開源代碼的作者/機(jī)-構(gòu)名字和原來產(chǎn)品的名字做市場(chǎng)推廣。

BSD 協(xié)議鼓勵(lì)代碼共享,但需要尊-重代碼作者的著作權(quán)。BSD 由于允許使用者修改和重新發(fā)-布代碼,也允許使用或在 BSD 代碼上開發(fā)商業(yè)軟件發(fā)布和銷-售,因此是對(duì)商業(yè)集成很友好的協(xié)議。很多的公司企業(yè)-在選用開源產(chǎn)品的時(shí)候都首選 BSD 協(xié)議,因?yàn)榭梢酝耆刂七@些-第三方的代碼,在必要的時(shí)候可以修改或者二次開發(fā)。


FleaPHP的起源

兩年多以前,我開始涉及使用 PHP 開發(fā) Web 應(yīng)用的工作。在反復(fù)編寫一些-過程式代碼后,我徹底厭倦了這種開發(fā)方式,開始懷念 C++ 中的面向?qū)ο笤O(shè)計(jì)。這時(shí),正好在 ChinaUnix 上看到了 shukebeita-兄的精華貼 。在這篇帖子里,shu-kebeita 提出了一種面向?qū)ο蟮?PHP 應(yīng)用開發(fā)方式。雖然只有一個(gè)-雛形,但這已經(jīng)讓我受益匪淺。

隨后,我根據(jù) shukebeita 的思路實(shí)現(xiàn)了 PFC 的第一個(gè)版本(當(dāng)時(shí)命名為輕量級(jí) OO 框架)。其實(shí)說起來,根本不-能稱之為框架,僅僅只有兩個(gè)類。但已經(jīng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)-單但實(shí)用的核心結(jié)構(gòu)?,F(xiàn)在回過頭來看,PFC1 實(shí)際上實(shí)現(xiàn)了一個(gè) Dispatcher 模式,根據(jù) HTTP 請(qǐng)求中的 action 參數(shù)調(diào)用不同的代碼。

在接下來的兩年時(shí)間,PFC 不斷翻新,最終發(fā)展到了 PFC3。該版本的 PFC 已經(jīng)完整的實(shí)現(xiàn)了 Dispatcher、MVC 模式,并且引入了 ViewDriver 抽象層、基于角色的權(quán)限驗(yàn)證、采用 Provider 模式實(shí)現(xiàn)的用戶和角色信息管-理、一個(gè)簡(jiǎn)單的但帶有緩存功能模板引擎等內(nèi)容。期間-曾經(jīng)試圖將 PFC 發(fā)揚(yáng)光大(笑),可惜由于工-作變動(dòng)和個(gè)人原因,項(xiàng)目進(jìn)度非常緩慢,最后終于放棄-了。但導(dǎo)致 PFC 放棄的主要原因并不是因?yàn)檫M(jìn)-度緩慢,而是因?yàn)槲铱吹搅?Web 應(yīng)用開發(fā)的殺手 —— Ruby on Rails。

Ruby on Rails

Ruby on Rails (后文簡(jiǎn)稱 RoR)是一個(gè)采用 Ruby 語言實(shí)現(xiàn)的快速、輕便的 Web 應(yīng)用開發(fā)框架,通過契約式編程大大簡(jiǎn)化了 Web 應(yīng)用的開發(fā)工作。

所謂契約式編程,基本思想就-是開發(fā)者必須嚴(yán)格遵守框架確定的一些規(guī)則和模式(例-如對(duì)象命名、數(shù)據(jù)庫(kù)主鍵字段命名等)。由于這些規(guī)則-和模式的存在,框架可以自動(dòng)完成許多以前需要開發(fā)者-自己處理的工作。例如根據(jù)特定的名字,獲取業(yè)務(wù)對(duì)象-或者數(shù)據(jù)表操作對(duì)象。更主要的原因是 RoR 實(shí)現(xiàn)了 ActiveRecord 模式,并且在這個(gè)基礎(chǔ)模式之-上,擴(kuò)展了許多便于開發(fā)者操作數(shù)據(jù)庫(kù)的方法。

雖然 ActiveRecord 只能處理 Create(建立)、Re-ad(讀?。?、Update-(更新)、Delete(刪除)等數(shù)據(jù)表操作,以-及一對(duì)一、一對(duì)多和多對(duì)多等幾種有限的數(shù)據(jù)表間關(guān)聯(lián)-關(guān)系。但我們平時(shí)開發(fā)的大量應(yīng)用程序,CRUD 又何嘗不是其中的主要內(nèi)容呢-。因此,RoR 為開發(fā)者解決了大部分日常任-務(wù),讓開發(fā)者可以集中精力到更關(guān)鍵的地方,例如業(yè)務(wù)-流程的實(shí)現(xiàn)。

在我看到 RoR 后,明白 PFC 雖然已經(jīng)解決了 MVC 模式、權(quán)限驗(yàn)證等任務(wù),但最-主要的數(shù)據(jù)庫(kù)訪問卻沒有提供任何能夠簡(jiǎn)化開發(fā)的解決-方案。經(jīng)過反復(fù)考慮,我終止了 PFC 系列,開始了一個(gè)“全新”的框架設(shè)計(jì)。

Flea1 與 FleaPHP

最初,這個(gè)新框架沿用了PF-C系列的命名方式,命名為 flea1(也就是 FLEA 第一版)。在這個(gè)版本中,我-試驗(yàn)了一些想法,并取得了不錯(cuò)的效果。

不過,我沒有采用嚴(yán)格的 ActiveRecord 模式,而是采用了類似 CakeP-HP ,一個(gè)類似 RoR 的 PHP 框架的 Model 設(shè)計(jì)。這種設(shè)計(jì)既實(shí)現(xiàn)了 CRUD 操作,又實(shí)現(xiàn)了數(shù)據(jù)表間的關(guān)-聯(lián)操作。將這個(gè)最初版本的 flea1 框架應(yīng)用到實(shí)際工作中后,馬-上取得了立竿見影的效果。數(shù)據(jù)庫(kù)訪問工作被大大簡(jiǎn)化-,甚至連數(shù)據(jù)庫(kù)訪問代碼都不用寫了。而且對(duì)于數(shù)據(jù)表-之間的關(guān)聯(lián),也能完成自動(dòng)化的處理。

接下來,我拿到了《企業(yè)應(yīng)用-架構(gòu)模式》這本經(jīng)典的設(shè)計(jì)模式書籍。經(jīng)過仔細(xì)研究,-并實(shí)際測(cè)試。我發(fā)現(xiàn)在 PHP 里面使用 ActiveRecord 模式并不是一個(gè)很好的選擇。因?yàn)?ActiveRecord 實(shí)際上是針對(duì)數(shù)據(jù)表里面的每-一個(gè)數(shù)據(jù)行構(gòu)造一個(gè)對(duì)象。這樣一來,對(duì)于 PHP 這種面向?qū)ο竽芰Σ粡?qiáng)(尤其是 PHP4)的腳本語言來說,-帶來了許多棘手的問題。

最終,flea1 的設(shè)計(jì)方案進(jìn)行了一些調(diào)整,-確定為現(xiàn)在的架構(gòu),并且框架命名為 FleaPHP。


未來的發(fā)展

FleaPHP 在外來將繼續(xù)保持簡(jiǎn)單易用、-高度模塊化的特點(diǎn),但同時(shí)通過可插入的模塊形式提供-更多的功能。

FleaPHP 項(xiàng)目的短期目標(biāo):

  • 完善文檔

    一個(gè)成功的項(xiàng)目,離不開完善-的文檔和技術(shù)支持。目前,F(xiàn)le-aPHP 的核心和主要功能已經(jīng)日趨穩(wěn)-定,但文檔還很匱乏。所以,近期 FleaPHP 項(xiàng)目組的主要工作就是完善文-檔,確保開發(fā)者能夠盡快掌握 FleaPHP 的使用。文檔目前正在撰寫的-包括開發(fā)指南和一些系列文章。

  • 支持更多的數(shù)據(jù)庫(kù)系統(tǒng)

    目前,F(xiàn)leaPHP 僅能支持 MySQL 數(shù)據(jù)庫(kù)。但由于 FleaPHP 的數(shù)據(jù)庫(kù)抽象層非常簡(jiǎn)單,所-以短期內(nèi)即可增加對(duì)多種數(shù)據(jù)庫(kù)的支持。

FleaPHP 項(xiàng)目的長(zhǎng)期目標(biāo):

  • 以插件形式提供更多的功能

    由于 FleaPHP 開放式的結(jié)構(gòu),開發(fā)者可以很方便的為 FleaPHP 提供更多的插件。這些將要增-加的插件包括完整的 Ajax 支持。

  • 吸收開發(fā)者參與,將 FleaPHP 建設(shè)為一個(gè)成功的社區(qū)開源項(xiàng)目

如果你有熱情,并且有能力為 FleaPHP 做貢獻(xiàn),我們隨時(shí)都?xì)g迎你加入 FleaPHP 開發(fā)者團(tuán)隊(duì)!




關(guān)于 FleaPHP


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 普定县| 榕江县| 常熟市| 东乡族自治县| 虎林市| 于田县| 新沂市| 安陆市| 宿州市| 奉新县| 永安市| 临汾市| 北宁市| 通海县| 全州县| 宣城市| 吕梁市| 秦安县| 五河县| 正定县| 武城县| 克东县| 自治县| 曲沃县| 宜城市| 柯坪县| 东乡族自治县| 东阿县| 莱芜市| 务川| 上栗县| 平利县| 泽库县| 瑞丽市| 手机| 凤台县| 清河县| 平武县| 蒙自县| 长兴县| 南京市|