新手必須要懂的PHP學習路線以及10個PHP優化技巧

熟悉OOP編程,學習thinkphp,zf框架,學習smarty模板引擎,pear (PHP擴展與應用庫),prototype(設計模式)。

對apache也應該買本管理員手冊好好看看。

同時大致瞭解一下linux等等。以及服務器管理等操作。

-------------------------------------------------------------

二、學習建議

"函數參考"那部分不必全看,但是 日期與時間、文件系統、其它基本擴展、Session、變量與類型 這幾部分建議一定要翻一下,裡面介紹了很多常用的函數和類。

這些函數不必都記住,只要有個印象就行,以後用到時再回來翻,用的多了自然就記住了。

先從留言本做起,再做個個人博客,然後再做個複雜點兒的CMS,或者小OA,所謂經驗,其實就是解決問題的方法,從項目中不斷思考,就能不斷收穫!

想學好PHP OOP, 直接上Zend Framework 2,半年後你會覺得自己進步許多

總結:自學非常重要,實際項目經驗也很重要。不要以為計算機基礎不重要,學習計算機基礎對學習編程語言非常有用。只要對自己狠一點,多下功夫,沒有攻不破的東西。

1基礎PHP程序員

重點:把LNMP搞熟練(核心是安裝配置基本操作)

目標:能夠完成基本的LNMP系統安裝,簡單配置維護;能夠做基本的簡單系統的PHP開發;能夠在PHP中型系統中支持某個PHP功能模塊的開發。

基本語法數組、字符串、數據庫、XML、Socket、GD/ImageMgk圖片處理等等;熟悉各種跟MySQL操作鏈接的api(mysql/mysqli/PDO),知道各種編碼問題的解決;知道常規熟練使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);瞭解基本MVC的運行機制和為什麼這麼做,稍微知道不同的PHP框架之間的區別;能夠快速學習一個MVC框架。能夠知道開發工程中的文件目錄組織,有基本的良好的代碼結構和風格,能夠完成小系統的開發和中型系統中某個模塊的開發工作。

2中級PHP程序員

重點:提高針對LNMP的技能,能夠更全面的對LNMP有熟練的應用。

目標:能夠隨時隨地搭建好LNMP環境,快速完成常規配置;能夠追查解決大部分遇到的開發和線上環境的問題;能夠獨立承擔中型系統的構架和開發工作;能夠在大型系統中承擔某個中型模塊的開發工作;

除了第一階段的能力,安裝配置方面能夠隨意安裝PHP和各種第三方擴展的編譯安裝配置;瞭解php-fpm的大部分配置選項和含義(如max_requests/max_children/request_terminate_timeout之類的影響性能的配置),知道mod_php/fastcgi的區別;在PHP方面已經能夠熟練各種基礎技術,還包括各種深入些的PHP,包括對PHP面向對象的深入理解/SPL/語法層面的特殊特性比如反射之類的;在框架方面已經閱讀過最少一個以上常規PHP MVC框架的代碼了,知道基本PHP框架內部實現機制和設計思想;在PHP開發中已經能夠熟練使用常規的設計模式來應用開發(抽象工廠/單例/觀察者/命令鏈/策略/適配器 等模式);建議開發自己的PHP MVC框架來充分讓開發自由化,讓自己深入理解MVC模式,也讓自己能夠在業務項目開發裡快速升級;熟悉PHP的各種代碼優化方法,熟悉大部分PHP安全方面問題的解決處理;熟悉基本的PHP執行的機制原理(Zend引擎/擴展基本工作機制);

3高級PHP程序員

重點:除了基本的LNMP程序,還能夠在某個方向或領域有深入學習。(縱深維度發展)

目標:除了能夠完成基本的PHP業務開發,還能夠解決大部分深入複雜的技術問題,並且可以獨立設計完成中大型的系統設計和開發工作;自己能夠獨立hold深入某個技術方向,在這塊比較專業。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)

作為基礎核心技能,我們在第二階段的基礎上面,需要有更深入的學習和應用。從基本代碼應用上面來說,能夠解決在PHP開發中遇到95%的問題,瞭解大部分PHP的技巧;對大部分的PHP框架能夠迅速在一天內上手使用,並且瞭解各個主流PHP框架的優缺點,能夠迅速方便項目開發中做技術選型;在配置方面,除了常規第二階段會的知識,會了解一些比較偏門的配置選項(php auto_prepend_file/auto_append_file),包括擴展中的一些複雜高級配置和原理(比如memcached擴展配置中的memcache.hash_strategy、apc擴展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之類的);對php的工作機制比較瞭解,包括php-fpm工作機制(比如php-fpm在不同配置機器下面開啟進程數量計算以及原理),對zend引擎有基本熟悉(vm/gc/stream處理),閱讀過基本的PHP內核源碼(或者閱讀過相關文章),對PHP內部機制的大部分核心數據結構(基礎類型/Array/Object)實現有了解,對於核心基礎結構(zval/hashtable/gc)有深入學習瞭解;能夠進行基本的PHP擴展開發,瞭解一些擴展開發的中高級知識(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式細節(mod_php/fastcgi);除了開發PHP擴展,可以考慮學習開發Zend擴展,從更底層去了解PHP。

-------------------------------------------------------------

三、高手進階

英文好的話推薦看 https://tutsplus.com/ (免費版本http://code.tutsplus.com/),雖然要付費(年付15美金/月),但是你得到的將更多。

我已經持續付費兩年了,最早學php,然後跟進CI、Laravel等框架,後來學jquery、angularjs等,都在項目中實際應用了,ror、nodejs也跟著學了學,但是沒有機會使用。

老外高手做的教學不但教程安排合理,節奏比較快,不浪費你的時間而且讓你能夠保持高度注意力集中,並且可以看看高手的編程習慣和工具,學習到的都是業界最新的東西,如各種編輯器的workflow,秒殺國phper的視頻。

研究php內核

php技術架構

最好能參與php開源項目

-------------------------------------------------------------

四、常見問題

技術線(偏深度):

1. 基礎知識,比如數據結構,多線程,I/O,Http協議等

2. 語言深度,比如PHP的運行機制,性能優化,APC(以及其原理等)

3. 源碼閱讀,比如看過哪些框架,其中的機制是怎麼樣的,往細了問

4. 知識寬度,靜態語言,比如C、Java等,我始終覺得只會一門語言不是什麼好事情

分享10條PHP性能優化的小技巧:

(1)foreach效率更高,儘量用foreach代替while和for循環

(2)循環內部不要聲明變量,尤其是對象這樣的變量

(3)在多重嵌套循環中,如有可能,應當將最長的循環放在內層,最短循環放在外層,從而減少cpu跨循環層的次數,優化程序性能

(4)用單引號替代雙引號引用字符串以實現PHP性能優化

(5)用i+=1代替i=i+1。 符合c/c++的習慣,效率還高

(6)優化Select SQL語句,在可能的情況下儘量少的進行Insert、Update操作,達到PHP性能優化的目的

(7)儘量的少進行文件操作,雖然PHP的文件操作效率也不低的

(8)儘可能的使用PHP內部函數

(9)在可以用PHP內部字符串操作函數的情況下,不要用正則表達式

(10)feof、fgets、fopen、在可以用file_get_contents替代file、系列方法的情況下,儘量用 file_get_contents,因為它的效率高得多。 但是要注意file_get_contents在打開一個URL文件時候的PHP版本問題


分享到:


相關文章: