本文旨在給要學習 PHP 的新手一個大概的認知輪廓,在內心有個學習的結構,有的放矢,避免走太多彎路。大神請忽略。php
一、掌握基本HTML、JS、CSS語法;熟悉 Bootstrap。css
參考:
https://www.runoob.com/html/html-tutorial.html
https://www.liaoxuefeng.com/wiki/1022910821149312
https://www.runoob.com/css/css-tutorial.htmlhtml
驗收最低標準:模仿寫出jd.com或者vip.com首頁第一屏內容。java
二、熟悉Linux命令行
熟悉經常使用發行版系統(CentOS、Ubuntu)安裝
熟悉經常使用命令行操做,包括文件管理、用戶管理、權限管理、防火牆管理等
熟悉VIM使用mysql
驗收最低標準:掌握lnmp環境搭建。linux
掌握PHP基礎語法、文件上傳、cookie、Session、JSON。
掌握MySQL數據庫鏈接:pdo使用。
掌握redis鏈接及簡單應用。
掌握命名空間。
掌握面向對象編程思想。nginx
參考:
https://www.runoob.com/php/php-tutorial.htmlgolang
學會使用ThinkPHP框架。主要是該框架在國內使用普及率過高了。不建議使用Laravel入門,由於該框架使用了較多的語法糖、第三方庫,對新手可能有難度。ajax
驗收最低標準:可使用ThinkPHP最新版做爲入手框架,寫出一個簡單的博客。頁面簡單寫就行。數據之間使用TP的 display 渲染到頁面。正則表達式
學會 Charles 抓包,看豆瓣的接口返回的數據。
學會寫接口(GET、POST)的就行。
學會使用 POSTMAN。
驗收標最低準:把上面的博客項目改爲先後端分離的,先寫完接口(最好有文檔),再在頁面裏使用ajax調用接口數據。
至此,你已經入門了。若是須要繼續往下,還要學習。
使用 composer 安裝PHP第三方庫
對於PHP斷點調試很是熟悉
學習經常使用PHP擴展
使用 SPL
掌握 PSR 規範
掌握反射的使用
掌握設計模式
熟練使用經常使用框架。
瞭解php和php-fpm的大部分配置選項和含義。
熟悉HTTP協議。
熟悉正則表達式。
熟悉MYSQL優化的一些技巧,例如MySQL的性能追查,包括slow_log/explain等;對於order by、limit、like等一些坑能避開;可以熟練使用經常使用的索引;對於表結構建立選用哪一種數據類型作到成竹在胸等等。
熟悉經常使用的配置,知道如何調優。
熟練配置主從。
掌握Redis使用:對於經常使用數據結構的經典使用場景很是熟悉;瞭解Redis的事務、RDB、AOF等機制。
掌握memcache的使用,知道與redis的區別。
瞭解一下MongoDB。
熟悉經常使用文本命令:例如wc、awk、split、diff、grep、sed等。
熟悉sort、uniq的使用。
熟練掌握ps、netstat、top等命令使用。
熟練使用Supervisor。
熟悉如何編寫shell腳本。
可以理解Nginx的配置的含義。
該階段PHP已經很是熟悉了,擁有快速開發項目、快速解決BUG的能力。代碼遵循psr規範、穩定性很高。
熟悉消息隊列使用,在不少場景合適的選擇消息隊列進行異步解耦。
熟悉如何使用 Elasticsearch 代替MYSQL的全文搜索功能。
熟悉多進程編程。
熟悉socket編程,對於網絡IO模型有必定的認知,熟悉多路複用(select/poll/epoll)技術。
熟悉swoole框架,能應用於項目上。
不限制於框架自己,任何框架一天內快速入手。
對php的工做機制熟悉,熟悉php-fpm生命週期。
可以知道PHP相對於c等強類型語言性能爲何會慢。
對於PHP內部的實現原理有必定的認知,例如變量的實現、zend引擎的瞭解。
對於PHP的擴展有必定的認知,能夠編寫簡單的擴展。
熟悉大批量的數據導入導出。對於線上大表操做可能帶來的風險有預知。
熟悉分庫分表。
對主從延遲能有效解決。
對於MySQL內置的一些函數可以熟練使用,熟悉觸發器、存儲過程的使用。
熟悉服務器核心性能優化選項 innodb_log_buffer_size、back_log、table_open_cache、thread_cache_size、innodb_lock_wait_timeout等。
對於MySQL內部索引的實現、事務隔離機制有必定的認知。
redis經常使用5中數據類型以外的數據結構也要能掌握一些。如bitmap、GEO、HyperLogLog、pub/sub等。
redis裏的事務、管道、分佈式鎖能熟練使用。
對於redis的服務端結構能有必定認知。
熟悉redis裏如何使用Lua。
嘗試閱讀redis源碼。
對於nginx很是熟悉,可以熟練配置https、負載均衡、反向代理;可以使用 lua-nginx-module。
對awk/sed 等應用已經如火純青,可以隨意操做控制處理文本統計分析各類複雜格式的數據。
對於tcpdump、gdb、ltrace、strace、lsof等熟練使用。
熟悉Linux應用編程:熟悉makefile使用;熟悉進程、信號、I/O知識;對於C語言有必定的瞭解。
熟練elk。
對於其它語言(例如java、c、golang)、其它領域(大數據)有必定的認知。
熟悉RPC、微服務架構。
可以支持對於千萬級流量網站的正常開發維護工做。
技術無止境,將來有更多可能。
本文首發於公衆號"飛鴻影的博客(fhyblog)",歡迎關注。