前言


经常会有PHP同事问:“我的PHP技术已经很熟练了,感觉遇到了瓶颈,接下来该怎么进阶突破。”,这是一个很多开发都会遇到的问题,在这里我把自己所使用的一些突破方法写出来,分享给大家,希望能帮到有需要的人。

断言

这里有必要打断一下,上面所说的熟练
,分两种情况:一种是真的很熟练了,各方面基本知识都到位了;另一种是只是当事人认为的熟练,不同技术层次,对技术的理解、看法是不尽相同的,需要区分对待,如果不是真的熟练,需要对一些薄弱项进行提升。

下面对进阶中的要点进行罗列,实践时不需要分先后顺序:

基础技术面覆盖

* 熟悉PSR规范,像PSR-1基本代码标准、PSR-2代码风格指导、PSR-3日志接口规范、PSR-4自动加载规范等都是很常用的
* 学会使用composer包依赖管理工具,常用的包需要常握,如:monolog、phpexcel、phpmailer等,避免重复造轮子
* 拥有自己的github主页,开源是当今时代的趋势,拥抱开源会给你带来不少乐趣
* 至少熟练使用市面上的主流框架中的一种,如果有兴趣,可以尝试自己写一套框架(会使用框架和会写框架是两个不同的层次)
* 数据库相关知识:主流的mysql是必须掌握的,常用的优化技巧,大数据存储分表、分库、分区等设计。
* 建立个人博客,写写技术相关的文章,写文章很锻炼文字表达能力,有时候明明一个很简单的技术点,让你用简结的文字描述出来,你会发现要做到通俗易懂是很费劲的
丰富自己的技术栈

a) 后端技术

* 缓存技术,如:redis、memcached、mongodb等使用
* 架构相关,如何构建高并发、高可用、易扩展、易维护的系统
* 消息队列,在高并发环境下,借助消息队列,将同步操作转换成异步操作,是个不错的选择
* MVC分层设计,这是每个开发都必须常握的知识,好的分层设计,能够让不同层之间很好的解耦,并尽可能的保持相互独立
* 模版技术,如:smarty等
* 性能优化,系统开发出来,不光要功能要完善,还要保证其稳定
* 熟悉HTTP、TCP、websocket协议等,websocket应用,socket.io是很值得学习的
* 安全相关:代码安全、SQL防注入、CSRF等
b) Web前端技术(html/xml/js/css/…)

* 人离不开互联网,互联网离不开网页,而html是网页中最基本的技术,所以是很有必要学习的
* 在熟悉原生js基础上,有必要学会使用一种主流的js框架(个人比较推荐jQuery)
* css选择器/xpath:很多地方都会使用到,如:js DOM操作、爬虫、数据挖掘、自动化测试等等
* h5相关技术,现在flash已慢慢被淘汰了,h5将是主流,不管是面向Web还是App,h5都有很大的成长空间
* 脚本安全:XSS等
c) 学习其他语言,如:python、nodejs、java、c/c++等等

* 市面上语言很多,每一种语言,都有它独有的特性,这是它存在价值;
* 语言学会了基本语法,就要拿去使用,去实践,这样才能从中有所领悟;
* python在人工智能中使用较多,它里面的很多设计是相当灵活的,如函数传参方式,还有很多功能强大的库:如数学计算库numpy、图片处理库PIL
* java中的多线程操作是其他语言所不能比的,还有连接池概念
* nodejs轻量,几行代码架设一个http服务,很容易做到前后端代码复用
* c里面的指针是很强大的,c里面的内存管理也是门学问
d) 服务器相关知识

* 这里的服务器,主要是指linux,熟悉一种主流的linux发行版本是有必要的(推荐CentOS)
* 服务器环境部署,基本的LNMP/LAMP要会部署,尽量源码部署,不要直接拿别人现成的一链部署脚本
* 服务器安全配置:防火墙、目录权限、进程安全等
其他补充

* 数据结构+算法,这是永恒的话题,不管什么技术,都离不开他们;语言只是工具,工具会变,但技术本身不变;
* 熟悉CI(持续集成),能在github上练习
* 多学习,让学习常伴左右,有的人认为工作之外的时间学习才叫学习,那是不好的,工作:既是工作,也是学习,不能仅仅工作
* 多阅读,读书使人明智,读书使人聪慧,读书使人高尚,每本书不用一字不漏整本看完,汲取其精华即可
* 多实践,实践是检验真理的唯一标准,只有通过不断的实践,才能让你的理论知识体系得到升华
* 多与同行交流分享,看看现实中遇到问题,同行们是怎么处理的
* 融会贯通,当你的知识面足够广的时候,你会发现,很多原本并无关联的知识,慢慢的产生了关联,而且这种关系,随着你的知识积累,会越来越明显
后记

以上所有,有自己的经验,也有别人的经验,我统一做了整合,希望每一个开发,都能找到适合自己的进阶路线!