PHP作為一門成熟的WEB應(yīng)用開發(fā)語言,已經(jīng)深受廣大開發(fā)者的青睞。與此同時,各式各樣的PHP開發(fā)框架也從出不窮,面對如此多而且良莠不齊的開發(fā)框架,開發(fā)者們想必都會眼花繚亂,不知道該選擇用哪個。其實并沒有一個標(biāo)準(zhǔn)來衡量哪個開發(fā)框架就是最好的,開發(fā)者們需要根據(jù)自己的需求和項目要求來選擇。今天蟬知小編和大家交流分享下開發(fā)者們在選擇PHP開發(fā)框架時應(yīng)該考慮哪些因素。
蠡縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
1.項目需求:定制開發(fā) VS 所見即所得的功能
選擇合適的開發(fā)框架首先是基于項目需求考慮的。如果你的項目需求都是一些基本通用的功能,通過一些基本的插件或組件就能實現(xiàn),那完全可以考慮使用諸如Joomla, 、WordPress、蟬知系統(tǒng)這樣的CMS系統(tǒng),因為這些CMS系統(tǒng)為你的開發(fā)工作提供了足夠的基本插件和組件。但如果你的項目需求比較特殊,并需要定制設(shè)計開發(fā),那么我們的選擇應(yīng)該傾向于像Zend、CakePHP、ZentaoPHP、Yii等這類開發(fā)框架,這些開發(fā)框架提供了函數(shù)庫,滿足開發(fā)者在此基礎(chǔ)上根據(jù)需求定制開發(fā)。
2.健全的架構(gòu):設(shè)計模式
大多數(shù)的開發(fā)框架采用的都是MVC設(shè)計模式,這也是被廣泛應(yīng)用于WEB開發(fā)的一種設(shè)計模式。在使用這些開發(fā)框架之前,開發(fā)者們需要認(rèn)真分析它的MVC模式是如何實現(xiàn)的,比如像Zend這樣的框架在實現(xiàn)MVC時自由度比較高,并允許開發(fā)者對其自定義修改,但像Yii這樣的框架,其MVC實現(xiàn)比較嚴(yán)格,開發(fā)者必須遵守框架制定的規(guī)則。所以小編個人在選擇開發(fā)框架時都會考慮一個問題,開發(fā)者與該框架到底誰是誰的工具。
3.數(shù)據(jù)庫訪問:提高數(shù)據(jù)操作效率
使用開發(fā)框架的一個很大優(yōu)點就是可以重用數(shù)據(jù)庫訪問層。一些框架提供了ROM支持,方便數(shù)據(jù)庫編程,也有一些框架比較人性化,注重開發(fā)者的自由度,比如zentaoPHP框架。zentaoPHP雖然沒有去實現(xiàn)ORM或者ActiveRecord這樣的功能,但是它為開發(fā)人員提供了足夠的自由發(fā)揮空間。框架里面提供了一個簡單方便的數(shù)據(jù)庫訪問對象類DAO,并且在封裝DAO的時候盡可能的兼容標(biāo)準(zhǔn)的sql寫法,這也是小編用的最順手的開發(fā)框架之一。所以小編不得不重申老觀點,“無論選擇什么,適合自己的才是最好的?!?/p>
4.安全機(jī)制:防御應(yīng)用程序漏洞
一款優(yōu)秀的開發(fā)框架需要健全的安全機(jī)制來防御WEB應(yīng)用程序漏洞,比如跨站腳本攻擊(XSS)、跨站請求偽造攻擊(CSRF)、Cookie攻擊等。尤其對于那些主流的、開源的開發(fā)框架,更是黑客攻擊的熱衷對象。開發(fā)人員在項目開發(fā)過程中必須意識到這些可能存在的漏洞,框架也應(yīng)該有相關(guān)的指導(dǎo)文檔,幫助開發(fā)者防御這些web應(yīng)用漏洞。
5.文檔和社區(qū)支持:降低學(xué)習(xí)曲線
開發(fā)者們自然都希望框架功能完善強(qiáng)大的同時,又能夠降低其學(xué)習(xí)成本。一款成熟的開發(fā)框架應(yīng)該有活躍的社區(qū)支持、詳細(xì)的參考文檔、豐富的示例代碼,以幫助開發(fā)者們能夠輕松快捷的掌握框架功能。
每款開發(fā)框架都有其優(yōu)點和缺點,開發(fā)者們需要根據(jù)自己的項目需求和框架的各自特點,綜合考慮到底選用哪個開發(fā)框架最合適。以上小編只是列舉了幾個常見參考因素,如果大家還有其他補充,歡迎和大家一起分享討論,我們共同學(xué)習(xí),共同交流,共同進(jìn)步
PHP的框架有很多,這里說一部分供大家參考:
國內(nèi)框架:ThinkPHP, Canphp, KYPHP, InitPHP, SpeedPHP, CdvPHP,KPHP。
國外著名框架:Zend Framework,Codelgniter,CakePHP,Symfony?,Yii,Seagull,Laravel。
小型框架:E,DuoLamPHP,Difeye,GalaxixPhp,PhpPeanuts,Rong Framework,Openbiz Framework。
PHP作為網(wǎng)絡(luò)開發(fā)的強(qiáng)大語言之一,現(xiàn)在應(yīng)用非常廣泛,具有開放源代碼,跨平臺性強(qiáng),開發(fā)快捷,效率高,面向?qū)ο?,并且易于上手,專業(yè)專注等諸多優(yōu)點。各種PHP開發(fā)框架也讓程序開發(fā)變的簡單有效。
框架就是通過提供一個開發(fā)Web程序的基本架構(gòu),PHP開發(fā)框架把PHPWeb程序開發(fā)擺到了流水線上。換句話說,PHP開發(fā)框架有助于促進(jìn)快速軟件開發(fā)(RAD),這節(jié)約了你的時間,有助于創(chuàng)建更為穩(wěn)定的程序,并減少開發(fā)者的重復(fù)編寫代碼的勞動。這些框架還通過確保正確的數(shù)據(jù)庫操作以及只在表現(xiàn)層編程的方式幫助初學(xué)者創(chuàng)建穩(wěn)定的程序。PHP開發(fā)框架使得你可以花更多的時間去創(chuàng)造真正的Web程序,而不是編寫重復(fù)性的代碼。
排名前 10 并且最受歡迎的 PHP 框架(排名不分先后)。,
1,Laravel這款可能是現(xiàn)在最受歡迎的 PHP 框架,Laravel 非常強(qiáng)大,而且很高雅,易于學(xué)習(xí)和使用。非常值得一試!
2,F(xiàn)light 是一個快速,簡單,可擴(kuò)展的微型 PHP 框架,允許用戶快速的構(gòu)建 RESTful web 應(yīng)用,同樣易于學(xué)習(xí)和使用,簡單但是很強(qiáng)大!
3,Yii 是個高性能的 PHP 框架,用來開發(fā) Web 2.0 應(yīng)用程序,Yii 擁有很豐富的特性: MVC,DAO/ActiveRecord ,I8N/L10N,緩存,身份認(rèn)證,基于用戶角色的訪問控制,scaffolding和測試等等。
4,,Medoo 是最輕的 PHP 數(shù)據(jù)庫,只包括了一個10,9kb 的文件,一個很強(qiáng)大的適用于簡單的 web 小應(yīng)用開發(fā)的微型框架。
5,PHPixie這個框架源于 Kohana 框架,是我最喜歡的框架了:兼容 MVC,能快速掌握,強(qiáng)大,你也應(yīng)該試一試!
6,CodeIgniter雖然是個比較老的框架,但是我還是很喜歡這個強(qiáng)大的 MVC 框架 CI,無數(shù)次在我的項目中使用它,從來也沒對它失去信心,依然是我不變的選擇!
7,Kohana 是個開源的,面向?qū)ο蟮?MVC web 框架,是使用 PHP5 來構(gòu)建的。這個框架是由一群志愿者隊伍開發(fā)的,他們致力于迅速,安全和小。
8,Symfony這個框架是在 2005 年創(chuàng)建,是個非常強(qiáng)大的 MVC 框架,在企業(yè)界是非常受歡迎的。Symfony 是收到眾多的 web 應(yīng)用框架啟發(fā)的:Ruby on Rails,Django 和 Spring ,它可能是最完整的 PHP 框架了。
9,Pop PHP很多 PHP 框架很漂亮也很復(fù)雜,Pop 的建立是考慮到所有經(jīng)驗層次的,提供了一系列可管理的學(xué)習(xí)曲線給初學(xué)者熟悉 PHP 的基礎(chǔ),同時又提供了健壯和強(qiáng)大的功能給有經(jīng)驗的 PHP 開發(fā)者。大小小于 2MB。
10,Phalcon 是一個開源的,滿棧的 PHP 框架,使用 PHP 5 類似 C 擴(kuò)展的語言來編寫的高性能框架。用戶不需要會用 C 語言,Phalcon 會提供 PHP 類。Phalcon 是松散耦合,用戶可以隨意使用組件來創(chuàng)建 web 應(yīng)用。
參考資料
PHP中文網(wǎng).PHP中文網(wǎng)[引用時間2018-1-4]
以下為十個目前最流行的基于MVC設(shè)計模式的PHP框架。
1. Yii
Yii是一個基于組件的高性能的PHP的框架,用于開發(fā)大規(guī)模Web應(yīng)用。Yii采用嚴(yán)格的OOP編寫,并有著完善的庫引用以及全面的教程。從MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務(wù),到主體化,I18N和L10N,Yii提供了今日Web 2.0應(yīng)用開發(fā)所需要的幾乎一切功能。而且這個框架的價格也并不太高。事實上,Yii是最有效率的PHP框架之一。
2. CodeIgniter
CodeIgniter是一個應(yīng)用開發(fā)框架——一個為建立PHP網(wǎng)站的人們所設(shè)計的工具包。其目標(biāo)在于快速的開發(fā)項目:它提供了豐富的庫組以完成常見的任務(wù),以及簡單的界面,富有條理性的架構(gòu)來訪問這些庫。使用CodeIgniter開發(fā)可以往項目中注入更多的創(chuàng)造力,因為它節(jié)省了大量編碼的時間。
3. CakePHP
CakePHP是一個快速開發(fā)PHP的框架,其中使用了一些常見的設(shè)計模式如ActiveRecord,Association Data Mapping,F(xiàn)ront Controller以及MVC。其主要目標(biāo)在于提供一個令任意水平的PHP開發(fā)人員都能夠快速開發(fā)web應(yīng)用的框架,而且這個快速的實現(xiàn)并沒有犧牲項目的彈性。
4. PHPDevShell
PHPDevShell是一個開源(GNU/LGPL)的快速應(yīng)用開發(fā)框架,用于開發(fā)不含Javascript的純PHP。它有一個完整的GUI管理員后臺界面。其主要目標(biāo)在于開發(fā)插件一類的基于管理的應(yīng)用,其中速度、安全、穩(wěn)定性及彈性是最優(yōu)先考慮的重點。其設(shè)計形成了一個簡單的學(xué)習(xí)曲線,PHP開發(fā)者無需學(xué)習(xí)復(fù)雜的新術(shù)語。PHPDevShell的到來滿足了開發(fā)者們對于一個輕量級但是功能完善,可以無限制的進(jìn)行配置的GUI的需求。
5. Akelos
Akelos PHP框架是一個基于MVC設(shè)計模式的web應(yīng)用開發(fā)平臺。基于良好的使用習(xí)慣,使用它可以完成如下任務(wù):
◆方便的使用Ajax編寫views
◆通過控制器管理請求(request)及響應(yīng)(response)
◆管理國際化的應(yīng)用
◆使用簡單的協(xié)議與模型及數(shù)據(jù)庫通信
你的Akelos應(yīng)用可以在大多數(shù)共享主機(jī)服務(wù)供應(yīng)方上運行,因為Akelos對服務(wù)器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用于發(fā)布單獨web應(yīng)用的框架,因為它不需要非標(biāo)準(zhǔn)PHP配置便能運行。
6. Symfony
Symfony是一個用于開發(fā)PHP5項目的web應(yīng)用框架。
這個框架的目的在于加速web應(yīng)用的開發(fā)以及維護(hù),減少重復(fù)的編碼工作。
Symfony的系統(tǒng)需求不高,可以被輕易的安裝在任意設(shè)置上:你只需一個Unix或Windows,搭配一個安裝了PHP5的網(wǎng)絡(luò)服務(wù)器即可。它與差不多所有的數(shù)據(jù)庫兼容。Symfony的價位不高,相比主機(jī)上的花銷要低得多。
對于PHP開發(fā)者而言,使用Symfony是一件很自然的事,其學(xué)習(xí)曲線只有短短一天。干凈的設(shè)計以及代碼可讀性將縮短開發(fā)時間。開發(fā)者可以將敏捷開發(fā)的原理(如DRY,KISS或XP等)應(yīng)用在其中,將重點放在應(yīng)用邏輯層面上,而不用花費大量時間在編寫沒完沒了的XML配置文件上。
Symfony旨在建立企業(yè)級的完善應(yīng)用程序。也就是說,你擁有整個設(shè)置的控制權(quán):從路徑結(jié)構(gòu)到外部庫,幾乎一切都可以自定義。為了符合企業(yè)的開發(fā)條例,Symfony還綁定了一些額外的工具,以便于項目的測試,調(diào)試以及歸檔。
7. Prado
PRADO團(tuán)隊由一些PRADO狂熱者組成,這些成員開發(fā)并推動PRADO框架以及相關(guān)項目的進(jìn)行。
PRADO的靈感起源于Apache Tapestry。從04年開始,PRADO成為SourceForge上的開源項目之一。這個項目目前進(jìn)展到了3.x版本。
8. Zend
作為PHP藝術(shù)及精神的延伸,Zend框架的基礎(chǔ)在于簡單,面向?qū)ο蟮淖罴逊椒?,方便企業(yè)的許可協(xié)議,以及經(jīng)過反復(fù)測試的快速代碼庫。Zend框架旨在建造更安全,更可靠的Web 2.0應(yīng)用及web服務(wù),并不斷從前沿廠商(如Google,Amazon,Yahoo,F(xiàn)lickr,StrikeIron和ProgrammableWeb等)的API那里吸收精華。
9. ZooP
Zoop PHP框架,意為Zoop面向?qū)ο蟮腜HP框架。
這是個穩(wěn)定,可伸縮并可移植的框架。從誕生到現(xiàn)在的5年間,已經(jīng)在不少產(chǎn)品開發(fā)中被使用。Zoop是一個快速,有效并干凈的框架。它的伸縮性很好,你可以只安裝你需要的功能。
對代碼并不很熟悉的開發(fā)者也可以通過Zoop快速的開發(fā)安全的web應(yīng)用。熟練的開發(fā)者則可以更加將Zoop的彈性利用到極致。
Zoop建議將display,logic以及數(shù)據(jù)層(MVC)分開使用。
Zoop由很多組件和項目集合而成,其中包括smarty和prototype AJAX框架,PEAR模塊等。高效的核心組件提供了很多你原本需要自己編碼來實現(xiàn)的功能。Zoop內(nèi)置的糾錯功能可以通過配置實現(xiàn)生產(chǎn)環(huán)境下的錯誤日志生成,這個錯誤日志提供了很多信息,可讀性很高,可以更輕易的尋找并排除錯誤。
Zoop的一個特別之處在于其GuiControls,在PHP中是一個相當(dāng)革新的想法。它提供了很多form widgets與驗證完整的集合到一起,并形成了一個可以輕松打造個性化GuiControls的框架。
10. QPHP
QPHP,意為快速PHP,它是一個與ASP.NET類似的MVC框架?;旧纤沁@樣一個情況:
◆整合了Java和C#的美感
◆除去了在其他PHP框架中使用的Perl形式的意義含糊的語言
◆大量基于OOP的概念
國內(nèi)的thinkphp也很不錯,使用框架可以避免重建底層函數(shù)等,加快開發(fā)速度。
php知識框架總結(jié)
篇一:php基礎(chǔ)知識點總結(jié)
PHP語言基礎(chǔ)簡單整理
1.開始結(jié)束標(biāo)記的格式只有在沒有判斷語句時才能使用。
對表單傳遞的變量進(jìn)行編碼和解碼:PHP中實現(xiàn)對查詢字符串進(jìn)行URL編碼可以通過函數(shù)urlencode()實現(xiàn),該函數(shù)的使用格式如下:string urlencode(string str);對URL編碼后的查詢字符串進(jìn)行解碼,可以通過urldecode()函數(shù)實現(xiàn),該函數(shù)的使用格式如下:string urldecode(string str);
15.PHP連接數(shù)據(jù)庫:
步驟: 一、建立連接------mssql_connect(server,uid,pwd);
二、指定database-------mssql_select_db(databasename);
三、執(zhí)行sql------mssql_query($sql,$link);
四、處理記錄集-------資源類型數(shù)據(jù),格式:bof---數(shù)據(jù)---eof
五、以特定格式讀取數(shù)據(jù)-----mssql_fetch_array()....
六、釋放相關(guān)資源、關(guān)閉連接------mssql_free_result($result);mssql_close();
16.數(shù)組:php的數(shù)組由鍵值和value值組成
定義:$array = array("鍵值"="value","鍵值"="value","鍵值"="value");如果不給鍵值賦值,默認(rèn)從0開始的int值
相關(guān)函數(shù):(1)in_array("值",數(shù)組名); 返回bool型-----查看數(shù)組中是否存在某value值
(2)array_key_exists("key值",數(shù)組名); 返回bool型-----查看數(shù)組中是否存在某鍵值
(3)array_keys(數(shù)組名);---將數(shù)組鍵值返回出來形成一個新數(shù)組,此鍵值作為新數(shù)組的value值
(4)array_values(數(shù)組名);---將數(shù)組value值返回出來形成一個新數(shù)組,此值作為新數(shù)組的value值
(5)key(數(shù)組名);----返回當(dāng)前指針指向的元素key值
(6)current(數(shù)組名);----返回當(dāng)前指針指向的元素value值
(7)next(數(shù)組名);----挪動當(dāng)前數(shù)組指針到下一步
(8)reset(數(shù)組名);----恢復(fù)數(shù)組指針,指向第0個元素
(9)end(數(shù)組名);----將指針挪向最后一個元素
(10)prev(數(shù)組名);----將指針向前挪動一位
(11)foreach(數(shù)組名 as $key=$value)
{
$key是鍵值,$value是value值,實現(xiàn)數(shù)組遍歷
}
(12)each(數(shù)組名);----將當(dāng)前數(shù)組元素依次取出(自動挪動指針)并放到一個新的數(shù)組中
(13)array_shift(數(shù)組名);----返回數(shù)組中第一個元素值
(14)array_pop(數(shù)組名);----返回數(shù)組最后一個元素值
(15)array_push(數(shù)組名,value);----向數(shù)組中追加元素
(16)array_unshift(數(shù)組名,value);----在數(shù)組最前面添加元素
(17)array_pad(數(shù)組名,數(shù)組長度,value);----向數(shù)組中追加多個元素,對數(shù)組副本操作,不改變原數(shù)組,返回一個新數(shù)組
(18)count();----返回個數(shù)
(19)array_unique(數(shù)組名);----去掉數(shù)組中重復(fù)部分,操作數(shù)組副本,不改變原數(shù)組,返回新數(shù)組
(20)sort(數(shù)組名);----從小到大升序排列數(shù)組value值,一般針對int型value值,返回bool型,成功返回true
(21)rsort(數(shù)組名);----從大到小,逆序排列數(shù)組value值
(22)array_combine(數(shù)組1,數(shù)組2);----將數(shù)組1的value值作為key,數(shù)組2的value值作為value值,形成一個新數(shù)組
(23)array_merge(數(shù)組1,數(shù)組2,數(shù)組3...);----合并多個數(shù)組,將多個數(shù)組value值依次合并,合為一個數(shù)組
(24)array_slice(數(shù)組名,int,int);----從目標(biāo)數(shù)組截取元素,形成一個新數(shù)組。開始位置為第二個參數(shù),結(jié)束位置為第三個參數(shù)。若第三個參數(shù)不寫,則默認(rèn)是截取到最后。
(25)array_splice();----用法同array_slice();但是其截取部分從原數(shù)組中刪除
(26)explode("字符依據(jù)",目標(biāo)字符串);----將字符串按照一定的依據(jù)拆分成數(shù)組
(27)implode("字符依據(jù)",目標(biāo)數(shù)組);----將數(shù)組元素按照依據(jù)組合成一個字符串
(28)range(mixed low,mixed high[number step]);----生成數(shù)組,例:range(1,100,8);---即從1到100,每8位取一個數(shù),組成一個數(shù)組
(29)shuffle(數(shù)組名);----用于將數(shù)組進(jìn)行隨機(jī)排序
(30)array_sum(數(shù)組名);----對數(shù)值型數(shù)組元素值進(jìn)行求和
(31)array_chunk(數(shù)組名,int);----分割目標(biāo)數(shù)組,返回一個新數(shù)組,其中數(shù)組的每個元素都是一個一維數(shù)組,int參數(shù)為分割成的一維數(shù)組的長度
17.Cookie和會話控制:
Cookie是在HTTP協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶工作站上信息的一種方式。Cookie是由Web服務(wù)器保存在客戶機(jī)上的小文本文件,它可以包含有關(guān)用戶的信息。無論何時用戶鏈接到服務(wù)器,Web站點都可以訪問Cookie信息。
存在server端的是session,存在client端的是cookie,它們用來存儲全局變量。 設(shè)定Cookie值:setcookie("名","值");
通過Cookie數(shù)組取值:$_cookie["名"];
設(shè)置生成期:setcookie("名","值",time()+1800);生成期為當(dāng)前時間加1800秒之后。
刪除cookie: setcookie("名","",time()-3600);中間值設(shè)置為空,并將當(dāng)前時間減去3600秒。 Cookie數(shù)組:setcookie("名[key]","值"); 使用foreach讀取。
在PHP中可以通過$_COOKIE預(yù)定義變量訪問Cookie的值。如果設(shè)置了php.ini中的register_long_arrays,那么就能夠應(yīng)用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中還設(shè)置了register_globals,那么就可以在PHP中作為全局變量使用各個Cookie值。但是,更改php.ini中的兩個文件設(shè)置,容易對PHP的安全構(gòu)成威脅,不推薦使用該方法,建議使用更新的$_COOKIE。
會話ID的傳送
會話ID的傳送有兩種方式,一種是Cookie方式,另一種是URL方式。
Cookie傳送方式:
這是最簡單的會話方式,但是有些客戶可能限制使用Cookie,如果客戶限制使用Cookie的條件下,仍要繼續(xù)工作,那就要通過其他方式來實現(xiàn)了。
URL傳送方式:
在該方式中,URL本身用來傳送會話,會話標(biāo)志被簡單地附加到URL的尾部,或者作為窗體中的一個變量來傳遞。例: