想要開發自己的PHP架構需要那些知識儲備?

來源:互聯網
上載者:User

回複內容:

很多人當聽到別人要開發架構的時候第一想法就是,又重複造輪子。
其實造輪子的過程是一個快速積累知識的過程,能較快的發現自己的不足,以及學到一些自己未發現的知識點。所以建議在有一定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正在做這個事情,不過比較菜。有興趣我們可以相互學習(*^__^*) 漲姿勢了別太早深入細節,類庫、外掛程式都是浮雲,架構架構,合理的架構規範最重要。
要讓大象跳舞,在功能強大的前提下,盡量的輕,別動不動引用一堆類,一堆設定檔。
很多架構只能說是個類庫
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.