回覆內容:
其實,讀取php原始碼應該要幫助最大。前提要有一些作業系統和c語言的基礎
http://www.php-internals.com/
不存在適合所有人的項目,讀的程式碼最好是你覺得有意思的,github有很多Trending PHP repositories on GitHub this month · GitHub
我覺得thinkphp蠻好的
推薦你讀下我們團隊開發的框架已經在其基礎上開發的作品。
框架:zentaophp
產品:zentao, ranzhi, chanzhi
對於市面上的許多框架我們持有不同的觀點,因此我們開發了自己的框架,並在這個框架基礎上實現了多款開源的產品,每款都有幾十個功能模組,多語言的支持,深度的擴展機制,api呼叫機制等等。
如果是為了學習PHP而讀取框架程式碼,那我還是建議你看看比較知名的框架,像是Symfony2, Lavavel, Yii2,但其實每個框架也都不是那麼簡單就能看懂源碼的,你還需要補充設計模式和新語言特性的知識。重要的是學習裡面的思想而不是語言技巧。
根據你打標籤的幾個開源框架,我的個人意見如下:
1. WP:不建議過度鑽研,這個blog 系統用起來還不錯,還可以做企業站點,只是源碼採用的設計模式比較特別,大量使用全域變量,不能算是一個進階的途徑,如果想研究奇淫巧技,這倒是可以看看的;
2. Discuz!:有研究價值,當然包含了Discuz 家的其他幾個開源系統, ucenter,uchome 等,學習他的一些多系統整合架構,可以為你提供很多新思路;
3. Yii:建議好好研究,尤其是Yii2,不論是目錄結構還是OOP 的設計模式都非常值得學習。缺點就是國內資料不多,需要花點時間;
4. Symfony:使用不多,無法給予客觀意見。
最好的研究是寫程式碼,做專案,
建議你參與進來,只有足夠的專案經驗才能分辨好壞,經驗不足是分辨不出好壞的.
可以參與我的開源專案
https://git .oschina.net/yiiany/yiiany
個人認為兩個方向
先說web整體架構類
最好的產品就是流行的框架了,推薦Yii,Symfony,ZendFramework,這類結構完整,封裝嚴密,功能完全的web開發架構。在研究這些框架時,你會體會到web中的各項概念。
舉個例子來說,例如你研究的是Yii,你會發現,Yii將cookie的封裝分別放在請求和回應物件上,這會使你更加清楚,cookie需要在請求時從瀏覽器獲取以及需要在回應時設定到瀏覽器端。
而且,除了web上的概念之外,你還可以從優秀的框架中中些到良好的設計方案,設計理念,實現策略等。
再例如,在Yii中,如果需要控制器動作代碼重用,可以使用行為來進行擴展,似的某項公共的操作被注入到控制器中。這時候,你就可以想到如果出現需要打破結構的功能重用,可以選擇使用注入類別的技術來實現。緊接著,你會想,這個注入類別的方案是如何實現的呢?經過程式碼追蹤,你會發現,使用了物件導向中的Traits機制。這樣就擴展了學習面。
(PS: 使用Yii舉例子的原因,是最近正在發布一些關於Yii的文章,沒別的)
再說說業務邏輯類
所謂的業務邏輯類,就是市面上可以實現某些特定功能的產品了,像是ecshop,phpCMS等。這類產品的特徵是,典型的業務邏輯都已經實現,而且實現的非常好,這樣在你學習代碼的時候,也就順帶著了解了某個方面的典型業務邏輯,知道了在做某事時,該做什麼了。
還是例如,如果你學習的是Ecshop,那麼你就會知道典型的商城應該具備的業務邏輯,在碰到類似的功能時,事半功倍。
(PS:這類的產品很多,你可以可以將眼光放在全球,不要僅限於國內,不過國內的產品,你後期使用到的幾率會大寫)
以上任何產品,一定選擇一個就去讀,學習,不要把大量的時間用在選擇上,時間長了,熱情減退,你發現你還沒有正式開始讀,僅僅完成了選擇,那就很遺憾啦!
最後,強烈建議,先將手冊好好通讀2遍,再說其他,一定!
laravel 吧
symfony裡面用了大量java常用的設計模式,如果用來學習的話,我覺得是比較合適等我,雖然很多寫法比較老舊和過於龐大。
laravel是從symfony分離出來的,寫法和技術都比較新。
yaf 和phalcon這種是實際應用的趨勢,php+c,兼顧效能與開發效率,讀些c程式碼也是有必要的