如何開發框架

2021-07-26 21:56:52 字數 2362 閱讀 5143

很多人當聽到別人要開發框架的時候第一想法就是,又重複造輪子。

其實造輪子的過程是乙個快速積累知識的過程,能較快的發現自己的不足,以及學到一些自己未發現的知識點。所以建議在有一定php基礎的情況下,都去嘗試完成乙個五臟俱全的基本框架吧。

那麼下面分享一下我之前造輪子的過程吧:

1. 嘗試試用乙個以上的框架,看完一遍使用文件,目的在於了解它都有哪些功能,發現他的一些比較好的用法設計;

2. 在看文件的同時並行的思考這一部分的實現原理,如果想不明白則記下來或者上github去看原始碼(當然在不熟悉**結構的情況下可能很難找,所以我建議還是先記下來);

3. 看它的專案結構,同時思考這個結構的意義,比如現在大部分框架都把入口檔案與靜態資源單獨放到public目錄裡與其它目錄分開的原因是什麼;

4. 嘗試看一遍原始碼的執行流程,從入口到輸出,以及錯誤處理,模板引擎,配置等多個點了解一下(如果基礎允許的話,在這過程中解決上面記下來的疑點吧);

5. 開始自己實現吧,先寫乙個大概的功能列表,把你要實現的點寫出來;

6. 然後思考如果組織**結構,在沒有太多實踐經驗的情況下就按你最熟悉的方式組織吧(先實現再優化);

7. 先跑通基本的hello world!;

8. 一點點加功能吧;

9. 發現不足,改進它;

這裡在加功能的時候,盡量自己實現所有的能實現的元件,比如檔案上傳,錯誤處理等等,畢竟目的是實習知識。

那麼這過程其實走下來對於基礎稍差的人來說可能會特別不順利,那麼沒關係,遇到哪乙個點卡住,先解決你對這個點的問題,快速補充知識再回來繼續。

總結一些在造框架過程中通常會用到的一些點吧(以下排列沒有先後順序):

1. mvc

2. 自動載入: php: 自動載入類

;3. 錯誤處理:http://

php.net/manual/zh/book.

errorfunc.php

;4. php標準庫 (spl)php: spl - manual

;5. 輸出緩衝控制: php: 輸出控制

;6. php 選項/資訊:php:php 選項/資訊

;7. 資料庫抽象層:php: 資料庫抽象層

;8. session拓展:php: session 擴充套件

;9. 反射:http://

php.net/manual/zh/book.

reflection.php

;10. 類和物件:php: 類/物件

;11. 影象處理和 gd:php: gd - manual

;12. 郵件相關的smtp;

13. 檔案系統:php: filesystem

;14. 預定義變數:php: 預定義變數

;15. 字串處理:php: 字串 - manual

;15. 正規表示式: http://

php.net/manual/en/book.

pcre.php

;基本的可能上面這些也足夠了,雖然上面給的每乙個鏈結都有很多內容,但是掌握常用的就好,可以結合搜尋引擎去了解。

如果你想給框架加一些更巧妙的,或者更豐富的功能的話,這裡還有一些知識點:

1. 常見的設計模式:工廠、單例,外觀、觀察者等;

2. 迭代器等預定義介面:php: 預定義介面

;3. 資料庫拓展:php: 資料庫擴充套件

;4. 國際化與字元編碼支援 php: 國際化與字元編碼支援

;5. 常用的快取,redis, memcache,apc等;

6. 佇列服務如activemq,beanstalkd等;

7. 多資料庫支援如mongo;

8. 事件與鉤子;

另外還有一種建立框架的方式,不過這裡用「建立」已經不太合適了,叫組合框架吧,那就是使用composer

基於開源元件拼裝乙個屬於自己的框架。當然這裡不建議新手這麼幹,這可能會讓你在很多基礎的東西上得不到鍛鍊。如果個人技術能力已經比較成熟了,目的在於快速開發專案的時候,用它絕對是利器。

1. slim framework

- 微框架,乙個框架基本功能都滿足了,很適合用於學習;

2. silex

- 微框架,基於symfony2元件;

3. codeigniter

- 結構很清晰的php框架;

1. write your own php mvc framework (part 1)

2. 使用php搭建自己的mvc框架

--- 2015.02.28補充---

看了樓下各位的回答,發現大家都跑題了,題意是「需要那些知識儲備?」 而不是「怎樣完成乙個框架」,完成框架的方法n種,而且按樓下某些的答案,完成了也學不到啥,甚至為啥這樣就可以作為乙個框架執行了,中間的原理都不懂,所以請慎重回答以免誤導別人。

如何選擇Web開發框架

四 選擇web開發框架的目的 了解了如果沒有框架,我們需要做的工作,這對選擇框架有非常大的幫助。框架,直白點說,就是乙個半成品,能夠幫我們做一些事情的半成品。框架的選擇,就是看哪個框架最合適,從而減少開發的工作量,提高開發的效率和質量,並有效減少維護的工作量,最終達到節約綜合開發成本,獲取更多的收益...

如何選擇合適的Web開發框架

web層的開發框架,數量非常多,而且各有特色,如 struts webwork spring mvc tapestry jsf webpage3.0 開發框架的選擇,始終是個仁者見仁 智者見智的事情。下面先來看看為什麼要使用web開發框架 使用框架的必然性 框架,即framework。其實就是某種應...

web開發框架 soa開發框架 比較

dynamic data web site asp.net mvc wcsf web client software factory framwork版本 net 3.5 sp1 net3.5 sp1 net 2.0,最新.net 3.5 最新版本 1.0 preview 5 feb 28 2008...