有哪些為了精通 php 而一定要自己實現一次的例子? demo?


說明

問題有點泛,我來嘗試著回答。

「精通 PHP」可以理解為以下三個:

  • 精通「PHP 解析器」
  • 精通「PHP 語法、函數(這門語言)」
  • 精通「PHP 項目開發」

精通「PHP 解析器」

可以從這裡開始學習:

  • PHP 核心:駭客指南 ?
  • 深入理解PHP內核(Thinking In PHP Internals)

精通「PHP 語法、函數(這門語言)」

死磕 官方文檔 。

  • 為其一年,文檔看十遍;
  • 看文檔的時候連帶下面的評論也都一併查看,那些評論價值極高,有代碼示例的要運行一遍;

我見過一個 PHP 高手,2011 年那會沒有好框架的時候,他用簡單的編輯器手寫代碼,編碼速度驚人,鍵盤敲擊聲如淘寶客服打字速度,啪啦啪啦啪啦啪啦啦,我問他怎麼做到的,他一臉 ( ̄_, ̄ ) 的說:文檔看了 8 遍吧,大家不都這樣嗎?

精通「PHP 項目開發」

這一塊強調的是比較實戰的「應用構建」。接觸的更多是軟體設計,工作流,隨便列幾個話題:

  • 用戶認證
  • 用戶授權
  • 緩存
  • 隊列
  • 計劃任務
  • 前端樣式構建工作流
  • 郵件
  • 本地化
  • 文件存儲系統
  • 表單驗證
  • 分頁
  • 測試
  • 數據模型設計
  • 錯誤記錄
  • 日誌管理
  • 模板引擎
  • 驗證碼
  • 第三方登錄
  • 資料庫優化
  • API 那一堆,如 OAuth、版本管理等。。。
  • 還有更多產品、業務專屬的,如附近的人計算、積分系統等。。。
  • 一口氣沒說完。。。等。。。

這些需要大量的項目經驗積累,按「10 個項目」為一個階段,你會發現每 「10 個項目」你對 PHP 的理解都不一樣。

實戰項目這個因工作職位而定,外包公司一年勤奮的能接觸到幾十個項目,之前在外包公司待過,半年處理 13 個項目。其他的如在大公司裡面工作,接觸的項目會比較少,有一些情況下,只是維護一個系統里的小功能,一年下來就一個項目經驗。

你不需要去「自己從零開始寫一個框架」來學習這些東西,就像 你不需要去學組裝汽車,甚至是生產汽車零件來成為老司機一樣

所以比較通用的方法就是找一個比較設計優良的框架,站在巨人的肩膀上來學習。

學習框架提供的每一個功能,並且在學習的時候問下面幾個問題:

  • 這個功能為什麼會出現?解決了什麼問題?
  • 這個功能通用性有多強?為什麼會被放到框架裡面?
  • 這個功能在設計上有哪些優於其他框架的地方?

PHP 里設計最優良的框架,只有一個我會推薦給你,那就是 Laravel ,原因在這裡: 最好的 PHP 框架是什麼?為什麼?。


一群大神秀技術啊,問的是PHP,不是C語言,寫擴展幹嘛?

1. 寫個簡單的文章管理系統,後期可加入模型管理…

2. 寫的過程中把分頁,多文件上傳等等自己實現一遍,封裝成類,盡量簡化實現,夠自己用就好…

3. 把頁面和代碼分離,用Smarty等模板技術…


- 路由器(Router

- 數據模型(ORM

- 請求、響應實現(Request、Response

- 一個自己完全自己實現的模板語言(Template

這4樣是成為大神的必經之路。也是整個web開發的核心功能。


為毛都邀我…?我可是PHP萬年黑啊……

精通PHP……要不寫個PHP解釋器如何?不考慮C擴展的話,不會太麻煩的,特別是當你使用rpython之類的玩意做底層的時候……

如果前者太麻煩,又或者寫點兒C擴展?隨便啥都行……

還是太麻煩的話……做個簡單框架吧……


寫一個比較完善的CMS或者框架,你就發現很多值得一練的例子。比如:

1,資料庫操作封裝,還有ORM之類的。

2,驗證碼庫,可以學到圖像處理

3,模板引擎

4,路由庫,以上可以學到正則

5,無限級分類,評論套嵌,遞歸

6,RBAC 許可權管理

7,日誌庫

8,還有什麼處理excel,email等文本什麼的

做完以上你會發現,自己的框架已經完成大半了。


題主所謂的精通PHP不知是具體指哪方面,我就從web開發方面說說自己的看法吧。

不知題主目前對PHP掌握程度到什麼程度,我就以掌握基本語法,寫過一點小的系統為背景說說。

首先,一個功能基本完備的CMS系統,肯定是需要完全自己實現一個的,包括資料庫架構和設計、內容的編輯發布修改刪除、評論(包括單個評論,多層評論,引用評論等)、會員註冊管理、管理員許可權配置等基本模塊。

在實現這個系統的過程中,你可能會接觸到很多重複的代碼,於是我們可以把這些代碼封裝起來。

自己封裝常用的功能是另一個快速提升的方法。

我們可以自己封裝這些類,比如資料庫操作類、驗證碼等圖形類、分頁類、上傳類、縮略圖、緩存類等。

然後走了這麼多自己寫的類,我們就可以去寫一些更加複雜的系統了,我們可以把剛剛的CMS拓展一下,進入論壇、社交等更加高級的系統。

除此之外,諸如商城系統,一些管理系統等一些專業性系統都可以實現一遍。

對原生PHP足夠了解之後,我們可以選一個框架,比如yii,國內的tp等,學習別人框架的內核,終極目標,是自己實現一個框架,包括簡單的MVC結構,模板引擎等常用框架的功能。

除了這些表象的東西,還有更多深層次的東西要去學,比如php拓展,linux伺服器運維,環境配置,資料庫的架構,安全性(很重要)等等。

除了這些,平常學習過程中,我們還可以寫一點實用的東西,比如簡訊發送模塊,email發送模塊謝謝實用性很強的東西,實現起來也非常容易的東西。還有一下比較綜合性的介面應用,比如微信公眾號的介面開發等。

寫的有點亂,以上


PHP命令行編程,PHP服務端守護進程,實現php擴展的C編程,開發高性能PHP框架


寫一個分析opcode 的擴展。好像舊的vld只支持php5,我編譯不過。

寫完估計能懂php大部分結構了。


所謂精通,精而悟道。

就算你厲害,寫了一個框架,性能方面演算法沒別人優化的好,你說這是php精通問題還是演算法問題?


推薦閱讀:

為什麼現在很多框架都用Composer來安裝,增加了學習難度?
php查詢資料庫用了一個c寫的擴展,這樣做有什麼好處呢?
PHP 大流量優化?
Mac 下如何搭建 PHP 開發環境?
建站的主要流程?

TAG:PHP | PHP框架 | PHP程序員 | PHP開發 | PHP學習 |