使用PHP有段時間了,好吧,只是使用而已。
沒做過大型項目,只做過簡單的模組開發,見識過 Yii ThinkPHP CI 等開源架構。
但是,只停留在知其然的狀態,很想自己弄個架構,由小見大一點一點的做一個東西出來,不知道從哪裡入手。
求大神指點迷津。
回複內容:
使用PHP有段時間了,好吧,只是使用而已。
沒做過大型項目,只做過簡單的模組開發,見識過 Yii ThinkPHP CI 等開源架構。
但是,只停留在知其然的狀態,很想自己弄個架構,由小見大一點一點的做一個東西出來,不知道從哪裡入手。
求大神指點迷津。
這個問題本來我不想回答的。但是思考了一段時間後,還是要吐槽下。
首先你要明白你為啥自己開發架構?
我想你自己都沒有想的特別明白吧。是為了寫個架構,覺得很酷,很厲害,還是僅僅為了順手,
符合自己的習慣。
樓主自己還是處於初手階段,對幾種不錯的架構原理都沒搞清楚,就開始寫架構。我覺得不是很腳踏實
地。當你瞭解到現在架構的優劣,原理,覺得不是很便利,或者覺得不是很符合自己的理念,習慣等。
你才去開發。那樣你才有實力,才有深刻得理解。
本人當時也是做了很多項目,也用了很多架構,覺得架構不是很符合自己的思想理念。才試著寫符合自
己思想的架構。
上面純屬個人理解。言辭不好地方,請多多指教。
先吐一句:架構和其他程式一樣,是用來解決問題的。如果你沒有遇到問題,為什麼要重新製造輪子?
然後說點正經的:
大部分的Web架構處理以下事情:
- 代碼重用:定義包、類、函數的放置和載入規則,建議直接整合Composer及其AutoLoad特性。
- 請求的分發管理:這個就是路由,Rest風的架構喜歡Rewrite,簡單的一點的架構主要通過參數來定位模組和方法所在。
- 設定檔管理:載入和動態載入配置資料
- 錯誤和異常管理:異常捕捉、錯誤記錄檔記錄以及錯誤碼規範。
- LayOut和模板引擎:如何規劃頁面配置、widget如何重用、ajax頁面如何結合、到期session如何重新導向;資料和模板怎麼渲染成HTML,是否壓縮和設定到期頭。
- 資料庫:如何融入控制器;支援什麼樣的driver;考慮主從分離的擴充性;以及是否使用ORM。
核心架構大體就是這些東西吧。外圍就是其他常用組件了,設計好隨插即用機制就好。
大型架構實現比較繁雜,可以找一些簡單的架構入手,再慢慢的體會大型架構的優點。
順便貼一個我寫的架構:https://github.com/easychen/lazyphp/tree/3.1
一般架構 單一入口->
路由->
分發->
渲染,加一些擴充性,給路由,分發和渲染加上介面或者抽象類別,再方便點加上composer,再好維護點加模組,然後改BUG。。
吐槽
:一般正式項目用較成熟的開源架構比較好,我已領教自主開發架構
對程式員的迫害T_T,優秀自主架構除外。
一般性質的PHP架構最基礎部分要包含URL路由與請求分發、資料庫連接和操作、模板引擎、常見字串數組操作、自動載入等功能和模組,可以參考一些實現的不那麼晦澀難懂的架構學習,一步步的實現,但是優質的架構並不是類庫和功能的封裝,還要有機的合理的將上述的功能模組結合在一起才能發揮巨大作用。
嘗試編寫一個自己的架構,有這樣的想法是好的,說明你是想進步,想讓自己學到更多的知識。
寫架構我覺得是對自己學到的知識或經驗的一個總結,只有當你對PHP及web程式有了更多的理解和自己的想法的時候,你才有貨去把這些想法和經驗通過架構總結出來。
寫文章我們都會寫,為什麼我們成不了作家呢?
所以我覺得不要想著去寫架構,你要想著讓自己更好的去理解PHP和web程式。
我推薦你應該多去看看 symfony作者的部落格 http://fabien.potencier.org/ 這裡的每一篇文章都很精彩,他的文筆風格很直白,通俗易懂,就跟老師上課那樣對技術的講解有因有果。
你可以嘗試去閱讀 Sliex https://github.com/fabpot/Silex 源碼,這個是Symfony作者開發的另一個簡易架構,不像Symfony那麼複雜。
最後附上我自己的部落格:http://www.tangrucheng.com 我也是初學者 大家可以一起交流和學習PHP
找一個架構照著寫一遍
然後你不用再問這個問題了
如果你的目的是“做個東西”,那麼最合理/常見的應該是寫個部落格程式
- 沒有業務空寫架構是需要大量經驗做基礎(知道各種不同項目的異同點,開發的痛點),而部落格程式是實實在在的業務
- 部落格業務的彈性十足,可以從非常小開始幾乎無限做大做複雜。而且可以涉及一個web的幾乎所有方面。
- 部落格自用自己部署上線,至少有1個系統管理使用者(自己)和若干遊客。而寫架構的話,還是繞不過“項目沒人用”的尷尬
廣告時間 - 我的PHP架構 LitPHP
雖然0.2版本長了10幾行,但289行的程式碼數應該還是全球最小的PHP架構
http://litphp.github.io/
粗看看代碼半小時,仔細看也就半天最多,應該能給寫架構提供一些思路。
php 社區已經非常成熟,各種模式和風格的架構都已經有實現了,私以為,你再去開發一個PHP架構,純粹是為了重複造輪子的樂趣和成就感。當然,如果有足夠的時間和經曆,可以嘗試去開發一個符合自己習慣的架構,一方面理解架構設計,一方面鍛煉自己的能力。不過,這一切都是在你用過,至少瞭解過很多不同風格的架構之後。
但是,其它的新興的技術,例如Node.js,還很年輕,各種包和架構都不十分成熟,還有很多待填補的空白,無限的可能性,這時候去開發一個架構,才有社區貢獻的意義。
發一個我的Node.js架構吧:Codekart,官網,文檔手冊
我不贊同,如果是我剛開始以前,肯定也會有這樣的想法。但是現在我會選擇用主流開源的架構。
自己寫架構,當然可以運行,但沒有經曆過時間的考驗,終究是需要不斷的重構!
你終究趕不上php的進化,php升級、架構升級會讓你抓狂
web的mvc架構太多了,推薦樓主轉向一些冷門的架構,例如 socket伺服器架構,非同步架構,行動裝置 App架構等
“使用PHP有段時間了,好吧,只是使用而已”。使用的時間估計還是有點短,接觸PHP三年以內建議先熟悉一些常用的PHP架構,CI,YII,thinkphp,Laravel,symfony等等,等火候到了再考慮寫自己的架構吧。其實用現有架構也好,自己開發架構也好各有道理。前提是你在開發架構前已經瞭解了其他一些架構的優勢和劣勢,這樣才能開發出更好的架構。如果只是想用架構快速開發產品,建議使用現有架構。
自己開發架構主要的好處是能夠讓你學習架構怎麼寫。如果想問如何編寫的話,我建議還是從定製某一款架構開始,改成自己需要的或者想要的,學習其中主要的實現流程以及用到了語言的哪些特性。不斷的定製修改之後直到最後你把他的核心部分代碼也改掉就成了你想要的了。
當然這個過程中也有很多可以思考和借鑒的東西,比如如何支援多線程、多進程、非同步日誌之類的,如何針對cli模式做最佳化
https://github.com/lloydzhou/router
可以看看