记得之前在某个论坛上看到别人说php程序员土,作为一名php程序员内心当然是不乐意的。不过别人这么说也不是完全没有道理,其实他说php程序员土应该指的就是php程序员不懂得与时俱进。

当然,这也不全是我们php程序员本身的锅。相信我们的队伍中至少也有三分之一的人员来自各大培训机构吧?在网上随便搜下各大培训机构的视频教程或者文字教程,讲的东西都还是几年前的东西。比如连接mysql的一水是用mysql扩展,但是这个扩展在php 5.5中就被标记为deprecated了,并且在php 7.0版本被完全移除。还有一个深有感触的就是在各种php群中,会有人贴出一段拼接的sql,然后问别人自己哪里写错了,为什么查不出来数据?让我来说,这些都属于典型的过时培训课程受害者。另外还有一些就是问现在从头做一个网站,选用哪个php版本?然后当别人推荐php7或者7.1的时候,他会当然的说php7和php7.1太新了,不稳定,问下用php 5.4怎么样? wtf……

所以你看,按照上面这些实例来说,别人说我们php程序员土是不是也有点道理?如果有的话,那我们要怎么改变现状,变得modern起来呢?我觉得可以从以下几个方面着手。

首先,要多关注语言层面的发展。比如php7早在15年底就已经released了,而且官方做了大量的测试工作,无论是功能上还是性能上的。php开发团队对php的向向前兼容做了很好的处理,除了移除了一些早已经deprecated的类和接口,其他行为几乎没有改动。并且被移出的这些类库和接口还有专门的文档:http://php.net/manual/en/migration70.php来说明,只要稍费点心,在自己项目中做些检索就能知道会不会影响已有功能。就算线上项目不敢轻易做版本迁移,新开发的项目总也没有理由去用过时的php5了吧?对于这总不做任何调查,稳定性全靠感觉的开发者,鸟哥不知道会不会气到吐血。再说扩展,用的最多的两种:图片处理和数据库访问。图片处理尽量用Imagick去替代GD,前者无论是功能还是处理速度或者是图片处理的质量都远胜于后者;数据库访问务必用PDO或mysqli去替代mysql扩展,前者(PDO)提供一套针对多种流行数据库的统一接口,让你无痛把程序部署在不同的数据库服务上,同时提供的预处理和参数绑定特性,能确保不会发生sql注入,你实在是没有冒着风险去拼sql了。

其次,作为一名与时俱进的程序员还要关注社区的动向。比如关注和实践下近两年比较火的laravel框架,号称为艺术家设计的框架,深入进去你会发现这个框架不仅用起来优雅,设计和实现的也很优雅;试下可以让php异步方式执行的swoole扩展和框架,按照作者自己的评测,性能比nginx还高(笑);还有workerman这种php socket服务框架,除了http协议外,还支持websocket,同时传输层的udp和tcp协议也都支持;尝试着在自己的项目中使用composer来管理依赖,省去了include来require去;在自己的项目和开发团队中践行社区推荐编码规范psr,搭配phpcs,约束团队内编码风格更统一;使用RESTFul架构模式来开始自己的下一个项目;还可以蹭个热点,去尝试下机器学习,可以预想在不远的将来会有很多相关职位和需求,这方面虽然不是php的强项,不过还是有类似php-ml这种优秀的机器学习库供你学习和研究。其实只要保持着对技术的热情,我觉得这些都不是很难做到的事情。做技术很重要的一点就是跟着大公司走和跟着社区走,还有一点就是记得github是你永远的好朋友,时不时的上去瞄两眼,相信偶尔会有惊喜发现。

然后,就是工具的运用了。这里的工具很广泛,从开发工具到调试工具,再到代码管理等。先说开发工具,在我实习的时候,组长让我用editplus去写代码,理由是没有太多代码提示,方便记住更多的函数。当时深以为然,后来随着学习的深入和知识面的扩展,才发现这是邪道。php有一个饱受大家诟病的问题就是混乱的函数名和参数设计,你想记住每个函数名和参数列表几乎是不可能的,我也奉劝各位想要靠背住函数名提升开发水平的还是考虑换条路。所以各位还是尽量使用phpstorm这种all in one的IDE或者vscode这种扩展性很强的编辑器。再说到调试工具,我注意到周围同事大部分时候调试还都是var_dump然后exit,很多时候这是没问题的。不过还是有必要了解一下xdebug的使用,采用单步调试能更方便的掌握任何阶段内存中变量的状态;还有类似kint和debugbar这种调试辅助工具,能大大提高你的调试效率。除了这种本地化的工具外,还有一些很cool的服务你值得关注。比如实时错误报告服务,sentry,能够让你很简单的分析自己的服务哪里出了问题,帮助你快速定位并解决问题;再比如性能监控服务new relic或者blackfire,通过简单的部署,就能分析出来自己线上服务的瓶颈所在,从而提升服务质量。代码管理的话现在应该没有理由不采git了,无论是更轻量的分支、本地版本库还是更多样化的协作方式,都是你值得拥有的原因! 当然了,还有很多更有趣和强大的工具在诞生,我们需要做的就是关注社区,保持进取。

最后,虽然我们在写php,但是眼光不应局限于语言本身。我们还需要了解诸如容器技术,像是docker、lxc,并且在生产和开发环境中尝试使用这些技术提高我们的环境搭建和服务部署效率。再比如持续集成,在敏捷开发的团队中一定对这个概念不会陌生,持续集成的主要意义在于快速发现错误和防止多人开发环境下分支大幅度偏离主干,比较出名的持续集成服务比如jenkins、travis或者是用php开发的PHPCI,如果你还没试过,可以挑选一个在自己的团队中尝试,附上一个总结的脑图给大家

所以,最关键的一点就是要时刻关注社区动向,保持对技术的热情和一颗折腾的心!如果觉得所讲的东西能够帮助到你,并且希望进行更详细的深入的学习,欢迎加群632109190进行讨论和学习。

PHP程序员应当如何保持与时俱进?的更多相关文章

  1. Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路

    http://blog.jobbole.com/111422 Java 生态圈 Java 的生态环境开放.自由,在Sun/Oracle.Google.Apache.Eclipse基金会等各大厂商,还有 ...

  2. Java程序员的发展前景

    不知道什么时候开始,IT业初级程序员的工作性质与进城打工的"农民工"变得如此惊人的相似.很多IT公司的高管认为"人便宜,就是要用到坏掉,然后再找更便宜.更年轻的" ...

  3. 浅谈程序员创业(要有一个自己的网站,最好的方式还是自己定位一个产品,用心把这个产品做好。或者满足不同需求的用户,要有特色)good

    浅谈程序员创业 ——作者:邓学彬.Jiesoft 1.什么是创业? 关于“创业”二字有必要重新学习一下,找了两个相对权威定义: 创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合,从而 ...

  4. Efficient&Elegant:Java程序员入门Cpp

    最近项目急需C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 老特工我还需保持敬畏(内容太多),本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ . Java是为了 ...

  5. 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

    程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...

  6. 2018年,Java程序员转型大数据开发,是不是一个好选择?

    近日网上有一篇关于Java程序员职场生存现状的文章“2017年 Java 程序员,风光背后的危机”,在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更加激烈的竞争. 不得 ...

  7. 在Java大环境下.NET程序员如何夺得一线生机

    先来看一组数据,从某招聘网站直接检索3-4w的岗位,会看到Java与.NET社会需求量的巨大差异,这里就不再对比高薪的岗位了,.NET的高薪岗位更是少的可怜:   笔者从业十余年,一直是在.NET圈子 ...

  8. 如何成为一名成功的iOS程序员,挑战年薪50万?

    编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域.你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识.只是对编程感兴趣还不足以功成名就——众所周知,我们工作起来像疯子. 编程是一个没有极限的职业,所 ...

  9. 大龄IT程序员的救赎之道

    不知道从什么时候开始,中年危机持续刷屏,遍布整个职场,横跨各个行业,对各个细分工种的中年男女或者即将步入中年的青年男女几乎形成了垂直打击,而且中年这个年龄分界线从40岁滑落到35岁,甚至到30岁.笔者 ...

随机推荐

  1. HDU 6189 Law of Commutation(规律)

    题意: 给定n,a,求区间 [ 1 , 1<<n ] 的数b 满足 的个数 分析:打出暴力程序可以发现当a为奇数的时候结果为一: 当a为偶时 , a^b=2^(k+b)mod 2^n ; ...

  2. 马的移动(BFS) 详细注释 一个具有情怀的题目

    题目描述 小明很喜欢下国际象棋,一天,他拿着国际象棋中的"马"时突然想到一个问题: 给定两个棋盘上的方格a和b,马从a跳到b最少需要多少步? 现请你编程解决这个问题. 提示:国际象 ...

  3. 【VBA研究】Excel VBA利用ADODB访问数据库使用小结

    [转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...

  4. 【中间件】IIS短文件名枚举漏洞

    1.1.1  漏洞描述 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名. 在Windows下查看对应的短文件名,可以使用命令 ...

  5. 剑指offer——面试题15:二进制中 1的个数

    // 面试题15:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如 // 把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. #inc ...

  6. centos7.1部署java环境服务器

    1.检查操作系统自带java是jdk还是jre(否有javac,本例中没有javac) [root@bogon ~]# ls -l /usr/lib/jvm/总用量 0drwxr-xr-x. 3 ro ...

  7. PIE SDK打开HDF、NC数据

    1. 功能简介 HDF 是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科 ...

  8. Android Zygote进程是如何fork一个APP进程的

    进程创建流程 不管从桌面启动应用还是应用内启动其它应用,如果这个应用所在进程不存在的话,都需要发起进程通过Binder机制告诉system server进程的AMS system server进程的A ...

  9. [Activator-HelloAkka] Define our Actors

    The Actor is the unit of execution in Akka. Actors are object-oriented in the sense that they encaps ...

  10. Oracle11gExpress和PL/SQL Developer安装

    Oracle11g为64位版本,PL/SQL Developer为32位版本 1.安装64为Oracle数据库/ 适用于 Microsoft Windows (x64) 的 Oracle Databa ...