回複內容:
很多人當聽到別人要開發架構的時候第一想法就是,又重複造輪子。
其實造輪子的過程是一個快速積累知識的過程,能較快的發現自己的不足,以及學到一些自己未發現的知識點。所以建議在有一定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. Regex: 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種,而且按樓下某些的答案,完成了也學不到啥,甚至為啥這樣就可以作為一個架構運行了,中間的原理都不懂,所以請謹慎回答以免誤導別人。其實很簡單的東西。
首先確定你掌握了以下知識:
1.通過url傳遞和接受參數處理
2.知道include的含義
3.會echo和定義函數。
OK,開始
首先,我們先來寫一個php檔案index.php,讓我們可以通過GET參數的不同來運行不同的函數。
學會composer ,看這個系列。
利用 Composer 一步一步構建自己的 PHP 架構https://phphub.org/topics/159其實前面的人已經說的很清楚了,
你這想法我曾經也經曆過,簡單的說,使用知名的產品,一般都是忙於實現,缺乏宏觀意識,由此說來開發一個架構也是很正常的。
我當時也開發了一個,其實我考慮的沒樓上說的這麼多,
就是簡單的路由分發,mvc分層。基本的架子搭起來後,逐步完善。
在工作中,碰到只需要自己一個人來完成的一次性小項目,就可以試試自己的架構了。
建議樓主找幾個簡單的架構看看,個人推薦codergniter,算是結構最清晰的架構了。
之前看協助等,算是學者用laravel 5.0開發了一個小應用,但是還是覺得缺乏自信,感覺對這個架構還是缺乏認識和瞭解,我是學java的,但是看到這個架構這麼火就試了下.
問題:
喜歡PHP,想學精通PHP和laravel,這樣的話就必須要從基礎學起,自己寫個架構才可以的嗎?如果你沒寫過架構,討論各個架構的內容都沒有可討論性
最終寫了一個架構出來,架構涉及到的內容很多,個人覺得自己寫一個架構對你自己的邏輯思維,開發架構以及這門語言都有質的提升。自己寫的過程中做了兩版,參照了ci tp yii 三個架構的原始碼(僅僅是看他們的思路,去粗取精),整個做下來部落格寫了將近20多篇
正題:
需要知識
1 路由解析
2 路由分配
3 IoC
4 資料庫封裝
5 cache封裝
6 模版解析 檔案cache
7 安全 xss sql注入
8 http 操作
9 圖片操作
10 等等 很多
每一塊都會展開很多的知識點
最後:自己寫的架構
fantiq/phpframework · GitHub正在做這個事情,不過比較菜。有興趣我們可以相互學習(*^__^*) 漲姿勢了別太早深入細節,類庫、外掛程式都是浮雲,架構架構,合理的架構規範最重要。
要讓大象跳舞,在功能強大的前提下,盡量的輕,別動不動引用一堆類,一堆設定檔。
很多架構只能說是個類庫