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

介紹國產(chǎn)的PHP MVC框架:FleaPHP

系統(tǒng) 3103 0

國產(chǎn)的PHP MVC框架:FleaPHP


官方網(wǎng)站: http://www.fleaphp.org
框架下載: http://www.fleaphp.org/download
框架API : http://www.fleaphp.org/docs/api/index.html
開發(fā)指南: http://www.fleaphp.org/guide
框架社區(qū): http://www.fleaphp.org/community

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ā)效率。

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

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

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

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

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

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

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

    雖然現(xiàn)在已經(jīng)有許許多多出色的工具庫可供選擇。但對(duì)于一些平常的需求來說,這些工具庫可能具有過度殺傷能力(也就是說工具庫本身提供了遠(yuǎn)遠(yuǎn)超過需求的功能)。由此帶來了學(xué)習(xí)難度增大、性能降低等問題。為此,F(xiàn)leaPHP 框架提供了一組輕量級(jí)的基本組件。這些組件被設(shè)計(jì)為擁有基本的功能和可擴(kuò)展。 例如 FleaPHP 附帶的基于角色的權(quán)限驗(yàn)證組件雖然不如 phpGACL 這樣的庫功能強(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):

  1. 簡單、容易理解的 MVC 模型

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

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

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

  3. 盡可能少的配置

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

  4. 高度可配置能力

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

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

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

  6. 豐富的助手對(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ù)雜的組件。

  7. 與 Smarty 集成

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

  8. 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)。

    當(dāng)然,如果你愿意將代碼反饋到社區(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é)議的簡單介紹:

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

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

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兄的精華貼 。在這篇帖子里,shukebeita 提出了一種面向?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è)簡單但實(shí)用的核心結(jié)構(gòu)。現(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è)簡單的但帶有緩存功能模板引擎等內(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 (后文簡稱 RoR)是一個(gè)采用 Ruby 語言實(shí)現(xiàn)的快速、輕便的 Web 應(yīng)用開發(fā)框架,通過契約式編程大大簡化了 Web 應(yīng)用的開發(fā)工作。

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

雖然 ActiveRecord 只能處理 Create(建立)、Read(讀取)、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ù)庫訪問卻沒有提供任何能夠簡化開發(fā)的解決方案。經(jīng)過反復(fù)考慮,我終止了 PFC 系列,開始了一個(gè)“全新”的框架設(shè)計(jì)。


Flea1 與 FleaPHP

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

不過,我沒有采用嚴(yán)格的 ActiveRecord 模式,而是采用了類似 CakePHP,一個(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ù)庫訪問工作被大大簡化,甚至連數(shù)據(jù)庫訪問代碼都不用寫了。而且對(duì)于數(shù)據(jù)表之間的關(guān)聯(lián),也能完成自動(dòng)化的處理。

接下來,我拿到了《企業(yè)應(yīng)用架構(gòu)模式》這本經(jīng)典的設(shè)計(jì)模式書籍。經(jīng)過仔細(xì)研究,并實(shí)際測試。我發(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。

介紹國產(chǎn)的PHP MVC框架: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)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 罗甸县| 新巴尔虎右旗| 文化| 上犹县| 象山县| 双鸭山市| 蚌埠市| 定西市| 固始县| 神池县| 綦江县| 九台市| 麻江县| 闵行区| 三门峡市| 永寿县| 平谷区| 尤溪县| 合江县| 阿拉尔市| 准格尔旗| 包头市| 鄂托克前旗| 西宁市| 陇西县| 丘北县| 丽江市| 永寿县| 长垣县| 洛阳市| 江阴市| 大安市| 米林县| 广南县| 铁力市| 饶阳县| 汕头市| 长子县| 封开县| 新晃| 无为县|