《寫PHP框架需要具備那些知識(shí)?》要點(diǎn):
本文介紹了寫PHP框架需要具備那些知識(shí)?,希望對您有用。如果有疑問,可以聯(lián)系我們。
如果沒用過框架,討論各個(gè)框架的內(nèi)容都沒有可討論性,想本身寫個(gè)框架涉及到的內(nèi)容很多,個(gè)人覺得本身寫一個(gè)框架對本身的邏輯思維,開發(fā)架構(gòu)以及這門語言都有質(zhì)的提升.可以參照其他框架的源代碼,僅僅是看他們的思路,去粗取精 .
簡單的說,使用知名的產(chǎn)品,一般都是忙于實(shí)現(xiàn),缺乏宏觀意識(shí),由此說來開發(fā)一個(gè)框架也是很正常的.也可以簡單的路由分發(fā),mvc分層.基本的架子搭起來后,逐步完善.在工作中,碰到只需要自己一個(gè)人來完成的一次性小項(xiàng)目,就可以試試自己的框架了.建議找?guī)讉€(gè)簡單的框架看看,個(gè)人保舉codergniter,算是結(jié)構(gòu)最清晰的框架了.
別太早深入細(xì)節(jié),類庫、插件這些都是浮云,合理的架構(gòu)規(guī)范最重要.要讓年夜象跳舞,在功能強(qiáng)年夜的前提下,盡量的輕,別動(dòng)不動(dòng)引用一堆類,一堆配置文件.很多框架只能說是個(gè)類庫其實(shí)很簡單的東西.
首先肯定你掌握了以下知識(shí):
1.通過url傳遞和接受參數(shù)處置2.知道include的含義3.會(huì)echo和定義函數(shù).
另外必要了解的知識(shí)有:
1 路由解析2 路由分派3 IoC4 數(shù)據(jù)庫封裝5 cache封裝6 模版解析 文件cache
7 平安 xss sql注入8 http 操作9 圖片操作 每一塊都會(huì)展開很多的知識(shí)點(diǎn).
很多人當(dāng)聽到別人要開發(fā)框架的時(shí)候第一想法就是,又重復(fù)造輪子.其實(shí)造輪子的過程是一個(gè)快速積累知識(shí)的過程,能較快的發(fā)現(xiàn)本身的不足,以及學(xué)到一些本身未發(fā)現(xiàn)的知識(shí)點(diǎn).所以建議在有一定PHP基礎(chǔ)的情況下,都去嘗試完成一個(gè)五臟俱全的基本框架吧.
簡單論述造輪子的過程:
1. 嘗試試用一個(gè)以上的框架,看完一遍使用文檔,目的在于了解它都有哪些功能,發(fā)現(xiàn)他的一些比擬好的用法設(shè)計(jì);
2. 在看文檔的同時(shí)并行的思考這一部分的實(shí)現(xiàn)原理,如果想不明白則記下來或者上Github去看源碼(當(dāng)然在不熟悉代碼布局的情況下可能很難找,所以我建議還是先記下來);
3. 看它的項(xiàng)目結(jié)構(gòu),同時(shí)思考這個(gè)結(jié)構(gòu)的意義,好比現(xiàn)在大部分框架都把入口文件與靜態(tài)資源單獨(dú)放到public目錄里與其它目錄分開的原因是什么;
4. 嘗試看一遍源碼的運(yùn)行流程,從入口到輸出,以及錯(cuò)誤處理,模板引擎,配置等多個(gè)點(diǎn)了解一下(如果基礎(chǔ)允許的話,在這過程中辦理上面記下來的疑點(diǎn)吧);
5. 開始本身實(shí)現(xiàn)吧,先寫一個(gè)大概的功能列表,把你要實(shí)現(xiàn)的點(diǎn)寫出來;
6. 然后思考如果組織代碼布局,在沒有太多實(shí)踐經(jīng)驗(yàn)的情況下就按你最熟悉的方式組織吧(先實(shí)現(xiàn)再優(yōu)化);
7. 先跑通根本的hello world!;
8. 一點(diǎn)點(diǎn)加功效;
9. 發(fā)現(xiàn)不敷,改進(jìn)并優(yōu)化它;
這里在加功能的時(shí)候,盡量自己實(shí)現(xiàn)所有的能實(shí)現(xiàn)的組件,比如文件上傳,錯(cuò)誤處理等等,畢竟目的是實(shí)習(xí)知識(shí).那么這過程其實(shí)走下來對于基礎(chǔ)稍差的人來說可能會(huì)特別不順利,那么沒關(guān)系,遇到哪一個(gè)點(diǎn)卡住,先辦理你對這個(gè)點(diǎn)的問題,快速補(bǔ)充知識(shí)再回來繼續(xù).
總結(jié)一些在造框架進(jìn)程中通常會(huì)用到的一些點(diǎn):
1. MVC
2. 主動(dòng)加載: PHP: 主動(dòng)加載類;
3. 差錯(cuò)處理:http://php.net/manual/zh/book.errorfunc.php;
4. PHP尺度庫 (SPL)PHP: SPL - Manual;
5. 輸出緩沖節(jié)制: PHP: 輸出節(jié)制;
6. PHP 選項(xiàng)/信息:PHP:PHP 選項(xiàng)/信息;
7. 數(shù)據(jù)庫形象層:PHP: 數(shù)據(jù)庫形象層;
8. session拓展:PHP: Session 擴(kuò)大;
9. 反射:http://php.net/manual/zh/book.reflection.php;
10. 類和工具:PHP: 類/工具;
11. 圖像處置和 GD:PHP: GD - Manual;
12. 郵件相關(guān)的SMTP;
13. 文件體系:PHP: Filesystem;
14. 預(yù)界說變量:PHP: 預(yù)界說變量;
15. 字符串處置:PHP: 字符串 - Manual;
15. 正則表達(dá)式: http://php.net/manual/en/book.pcre.php;
基本的可能上面這些也足夠了,雖然上面給的每一個(gè)鏈接都有很多內(nèi)容,然則掌握常用的就好,可以結(jié)合搜索引擎去了解.
如果你想給框架加一些更巧妙的,或者更豐碩的功能的話,這里還有一些知識(shí)點(diǎn):
1. 常見的設(shè)計(jì)模式:工廠、單例,外觀、察看者等;
2. 迭代器等預(yù)界說接口:PHP: 預(yù)界說接口;
3. 數(shù)據(jù)庫拓展:PHP: 數(shù)據(jù)庫擴(kuò)大;
4. 國際化與字符編碼支撐 PHP: 國際化與字符編碼支撐;
5. 常用的緩存,Redis, Memcache,Apc等;
6. 行列步隊(duì)服務(wù)如ActiveMQ,Beanstalkd等;
7. 多半據(jù)庫支持如Mongo;
8. 變亂與鉤子;
另外還有一種創(chuàng)建框架的方式,不過這里用“創(chuàng)建”已經(jīng)不太合適了,叫組合框架吧,那就是使用Composer基于開源組件拼裝一個(gè)屬于自己的框架.當(dāng)然這里不建議新手這么干,這可能會(huì)讓你在很多基礎(chǔ)的東西上得不到熬煉.如果個(gè)人技術(shù)能力已經(jīng)比較成熟了,目的在于快速開發(fā)項(xiàng)目的時(shí)候,用它絕對是利器.
P.S:最后保舉一些參考框架:
1. Slim Framework - 微框架,一個(gè)框架基本功能都滿足了,很得當(dāng)用于學(xué)習(xí);
2. Silex - 微框架,基于Symfony2組件;
3. CodeIgniter - 布局很清晰的PHP框架;
另外這里還有一些教程可以參考,不過建議先本身嘗試:
1. Write your own PHP MVC Framework (Part 1)
2. 使用PHP搭建本身的MVC框架
想了解更多PHP問題的找老師?后援網(wǎng)劉老師企鵝: 1455067020
看完不要跑記得進(jìn)去吐吐槽!╰( ̄▽ ̄)╮
歡迎參與《寫PHP框架需要具備那些知識(shí)?》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9101.html