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

2021-02-19 PHP編程


適合PHP學習者的學習路線:

一、實戰演練

熟悉語法&api -> 閱讀thinkphp codeigniter wordpress ecshop等源碼 -> 用PHP獨立開發項目 -> 深入了解PHP引擎實現細節、擴展編寫、性能優化等

 

(1周)HTML+CSS HTML5+CSS3
(2-3天)留言板或記事本,(增刪改查,數組函數資料庫函數)
(7天)bbs或企業網站,(模板、分頁、權限)phpchina的高手PHP高手帶路--問題匯總解答以及PHP手冊
(1個月)學習discuz學習外國的開源程序(zencert Joomla drupal).學習phpchina上的精華知識。
(1個月)深入學習zf框架(增刪改查,權限控制,前端模板頁面等)
(長期總結)對自己做過的小項目進行總結,用面向對象思想,對結構優化。
    看開源的框架源碼(這步請注意找一些比較小巧的開源框架如 CI,Slim ),增強對 MVC 的理解
    更加深入的系統的學習(MySQL Linux C 語言 javascript html css redis 等)



最緊要實戰:

(2周)3個站(至少20個美工頁面)psd to html 切制練習。
(1周)jquery實戰演習
(1月)用zf框架,開發模塊,達到靈活掌握

必須掌握的知識點:

資料庫必須熟練掌握 mysql & sqlserver,同時必須熟練zendstdio的操作。
熟練進行phpmyadmin的操作。
adodb(資料庫接口)+javascript+xml+ajax(異步JavaScript和XML)+jquery(JS框架),
熟悉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版本問題



相關焦點

  • PHP的語言層面的優化以及代碼優化技巧
    首頁 > 語言 > 關鍵詞 > php最新資訊 > 正文 PHP的語言層面的優化以及代碼優化技巧
  • PHP代碼20個實用技巧
    在這篇文章中我們將看看一些關於PHP開發有用的提示和技巧,可以用來改善和優化您的PHP代碼。
  • PHP學習路線、資源和好文章分享
    (強烈推薦)     http://bbs.itheima.com/thread-300718-1-1.html要大大提高PHP效率,不能不看的50個細節!(強烈推薦)    http://bbs.itheima.com/thread-300719-1-1.html 12個提問頻率最高的PHP面試題     http://bbs.itheima.com/thread-300721-1-1.htmlPHP性能如何實現全面優化?不懂,看這貼就夠了!
  • php語言入門教程(PHP編程學習路線圖)
    php語言入門應該從哪裡開始學起呢?是先學html還是php?還是直接學習PHP框架?
  • PHP學習資料推薦(書籍篇)
    根據我自己對php後端認知,以及現在市場需求了解到的,推薦下學習資料,分書籍,視頻和公眾號,博客四類,這次主要推薦書籍,方便大家後面學習提高。書與書之前也有差別,以下推薦主要是名著,能有效傳輸知識書籍,涵蓋前端,軟體工程,微服務,分布式系統,高流量網站建設,php基礎,php框架源碼解讀,php內核解讀,redis應用,運維以及優化和內核解讀,mongodb基礎,分片,集群,mysql基礎,innodb源碼解讀,mysql配置,語句,索引優化,nginx應用,配置優化,源碼解讀,linux 網絡編程,c語言基礎,算法(c描述),tcp/http
  • 新手入門:初學動態網頁PHP的18個例子
    首頁 > 語言 > 關鍵詞 > 最新資訊 > 正文 新手入門:初學動態網頁PHP的18個例子
  • 性能優化之PHP優化
    在我們平常寫代碼的過程中,除了資料庫的優化,針對與文件的優化,我們還需要對PHP執行優化,當然對於老司機來說,這都是毛毛雨咯~但是畢竟有新手嘛,於是,我整理這麼一片文章。(未完待續...)1.1比1.2要快的多。
  • 介紹PHP中的10個實用函數
    資深的PHP程式設計師對它們可能都很熟悉,但很多的PHP學習者,仍然對一些非常有用的函數不太熟悉。這篇文章裡,我們就列舉10個你或許不了解但實用的PHP函數,供大家參考和學習。這個函數可以用來檢查特定文件中的PHP語法是否正確。使用方法:<?php$error_message = "";$filename = ".
  • php學習之php變量及變量的八種數據類型
    1.什麼是變量說明:在php中存儲數據的一種方式,就是i可以發生改變的量,這種方式是在內存中開闢一個可以存放數據的空間,給這個空間起個名稱,這時候的空間就可以稱為一個變量。php$str1 ="吾愛樂享";$str=<<<ABC<ul><li>吾愛樂享</li><li>$str1</li><li>學習</li></ul>ABC;echo $str;?
  • 為什麼程式設計師都黑php? PHP中文網有話說!
    第一個問題,如果你只是想單純的寫後臺程序,可以不用學太多的html/css尤其是css,後臺程序基本是邏輯,css基本用不了太多,但是還是要了解一些基礎,html基本的標籤要知道使用,不要php提交表單連這些都不會用,總之先學後臺的話還是要一點html的基礎吧。
  • php語言是什麼?學好php需要掌握什麼?
    php的語法有C、Java和Perl的特點也有自創的特點,經過了24年的發展php從最初的1.0發展7.0版本,php的功能已經發展非常強大,php是適合編程零基礎入手的一門程式語言,下面為大家介紹一下學習php需要經過哪些過程?
  • php怎麼了,又要涼涼了嗎
    如圖:大家也都看到了,這次php涼涼的原因是因為馬蜂窩裁員,換php為java,所以php就又要涼了?二、為何要換java雖然不想承認,但是不得不說java確實更適合大項目一些,不管是從安全性還是架構擴展多線程,確實是比我們php強一些。
  • PHP 的奇技淫巧
    『工欲善其事,必先利其器』,我覺得編碼的一些技巧也同樣適用。更加優雅的判斷語句isset 語句isset 參與判斷賦值<?phpfunction compare(int $a, int $b): int{ return $a <=> $b;}Null 合併運算符<?
  • (基礎篇) PHP需要它—PHP擴展庫
    想要從學習課堂獲取學習視頻的,可以加 QQ:296637612    備註:學習
  • PHP+MySQL實現對一段時間內每天數據統計優化操作實例
    關注我喲小編 隔天推送php教程,php技巧,php視頻教程,MySQL,筆試題等諸多優質內容,最接地氣、重服務的本地微信平臺!關注我們妥妥沒錯!(商務合作聯繫QQ號:2230304070)http://www.jb51.net/article/136685.htm這篇文章主要介紹了PHP+MySQL實現對一段時間內每天數據統計優化操作,結合具體實例形式分析了php針對mysql查詢統計相關優化操作技巧
  • PHP是什麼?
    語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。
  • 三年php程式設計師到後面走全棧工程師路線,不再拿一萬的工資
    php是目前程式語言最容易學習的程式語言之一,中文文檔也很多,可以說學習php不需要投資很多的資本就可以完全成為合格的php工程師,但是小編建議到後面走全棧工程師路線。三年php程式設計師說不多不多,三年php程式設計師可以積累很多技術,三年完全可以做全棧工程師。
  • php學習之php的預定義變量的使用
    說明:就是php系統內置的提供給使用的變量,這個變量一般都是超全局變量,超全局就是沒有作用域的限制有的還可以跨頁面$GLOBALS_SERVER_GET_POST_FILES_COOKIE_SESSION_REQUEST_ENV1.
  • 搜索 PHP代碼審計之旅
    但如果這些代碼是分布在一套源碼中(如CMS),需要我們去發現,去找到並會利用,就需要有一定的查找以及利用思路,這次測試的是BlueCMS1.6,重要不在於去復現這個CMS的漏洞,而在先了解一下整個審計思路還有過程是怎麼樣的,去鍛鍊自己的審計能力。由於我比較菜,所以有錯誤的地方也請師傅們指正。何為白盒、黑盒、灰盒測試審計代碼會經常遇到這三個名詞,這又代表是什麼意思那?
  • PHP新手上路:1.PHP簡介
    正在閱讀:PHP新手上路:1.PHP簡介PHP新手上路:1.PHP簡介2004-02-14 09:33出處:PHP中文用戶作者:佚名PHP是完全免費的,不用花錢,你可以從PHP官方站點(http://www.php.net)自由下載。PHP遵守GNU公共許可(GPL),在這一許可下誕生了許多流行的軟體諸如Linux和Emacs。你可以不受限制的獲得源碼,甚至可以從中加進你自己需要的特色。PHP在大多數Unix平臺,GUN/Linux和微軟Windows平臺上均可以運行。