本文作者Bruno Skvorc是一名资深的Web开发者。在这篇文章里主要是讲述成为一名专业的PHP专家所要经历的过程,以及在这个过程里要如何学习掌握技巧和对工具的舍取。(以下为编译内容)

当阅读各种和PHP相关的博客、Quora问题、Google+社区、资讯和杂志的时候,经常会注意到在技术上出现两极分化的现象。问题均围绕在“我如何连接到一个MySQL数据库?”,或者是“我如何使得邮件系统能够每小时发送超过一百万份电子邮件,在不引入一个新的服务器的前提下?”这样的范围内。

通过分析研究,可以根据对PHP的使用能力将应用者分为四类:初级、中级、专业和精英。

在极端情况下

使用PHP语言,初级者会学一些变量、include()包含文件、表单处理。还会学一些逻辑架构,就连发送一份邮件也要借助教程,即使是点击面向对象编程的案例的时候也不一定真正理解它的运行原理。

PHP专家每天都会花很多时间将PHP应用于各个项目中,比如商业应用或者各种需要数据库和PHP相结合的应用。此外,这些专家还会参加各种研讨会,学习设计各种各样的模型,并且很容易就开发出一个完整的项目——从图表设计到最后执行。关键一点是他们早已不再拘泥于程序式的代码编程了。

精英程序员就是传说中经过10000+小时技术磨练的专业PHP人士,他们通过自己编写扩展来扩充PHP的开发功能,更牛的是,他们只要粗略的浏览一下源文件就能找出bug,对代码布局可以说是相当的细致。他们能够创造出最复杂的项目,在别人还没发现问题之前,他们就已经找出可替代的完美方案了。除此之外,他们还会写一些比较受欢迎的PHP语言类的书本,参加各式研讨会,创建一个非常成功的框架也是不在话下的。

关键环节

一个程序员如何从初级者转变到专业者或者更厉害的角色呢?如果一个人只会基础的编程知识,那基本上是不可能有所提升的,更别说去运用一些更先进的技术方法了。要想成为一个专业的PHP程序员,首先要做的就是成为一个中级PHP程序员。

接下来的这个列表就是初级者需要经历的过程——熟练使用PHP的过程。

放弃意大利面式代码

很多人认为使用类就意味着是在编写面向对象的代码,而使用函数就意味着是在编写过程式代码。其实这是大错特错了,先来假设一下广泛的vanilla定义:过程式代码就是不需要使用类和目标的代码,OOP代码就是尽可能多的使用类和目标的代码。

这里的建议是完全放弃过程式代码,尽可能多的使用面向对象的编码风格——编写类,封装逻辑,考虑真实的术语。建立在类代码基础上的过程式代码的性能优势,在和重实用性的OOP代码相比是微不足道的,适当的OOP代码可以让未来的开发者继承你的项目。

仔细分析现有项目

不管你是在哪里看到的源代码,都要仔细钻研。例如,在Github里查找PHP项目,复制下来,部署在自己的设备上,试着结合自己的代码来运行这一项目。一个文件接着一个文件,一行代码接着一行代码,直到你真正理解每个代码的意义。

创建自己的PHP环境

创建自己的PHP环境也是一种很珍贵的技能。这不仅能让你熟悉PHP的安装设置,还可以让你熟悉如何通过修改源码来实现功能扩展。

虚拟机和虚拟化软件也可以帮你做实验——如果出现了错误,你可以擦掉重新开始或者做一个回滚。也可以尽可能多的在字面上进行测试实验,而不用担心弄的太乱。掌握工具的使用方法是很重要的,但有一个好的工作台也是同等的重要。

用你自己创建出来的设置做实验亦可让你熟悉不同的服务器——例如什么时候要用Nginx或Apache,或者是使用Appserver等等。

尽早应用最佳实践

在编写自己代码的时候,要确保对自己的文档块严格注释、完美缩进、仔细完成架构。在构建一个类,项目或类库之后,使用性能优良的文档工具(PHPDocumentor,ApiGen)来提取文档块,并在这个文档块上进行改进。

早一点适应最佳实践能够帮助你在项目进程里保持一致,更有助于别人流利的阅读你的代码。找到你的风格并坚持下去——这对你自己和别人都有好处。

尝试不同的框架

有很长一段时间,PHP是一个具备最多框架的编程语言,不管这一说法在技术社区和语言界的影响力如何,但事实是,选择一款框架是一个很纠结的事情,尤其是在刚开始的时候。

经过对大多数框架的长时间试用,这里衷心推荐Phalcon作为主力框架,主要源于其在稳健性和质量方面的优秀表现,事实上Phalcon是用C语言编写的,而且可以当作是PHP扩展框架安装。无论如何,尝试使用不同的框架绝对是很有必要的。

大量阅读资料

千万不要低估了别人给你的暗示和小建议(无论是在书上还是在工作中),尽可能多的阅读各方面的编程知识。阅读博客、教程、在StackOverflow上面阅览问答、订阅资讯杂志等等。但是要避免基础的PHP教程书本,最好是专注于网上有用的、最新代码的个别片段和教程。即使是已经读过的内容也可以再读几遍,一定能从别人的观点里领悟出新的想法。

结论

除此之外,在无事可做的时候,不妨自己创建一个项目:觉得日常使用的App功能太少了,自己创建一些辅助功能,或者尝试着重建一个基础的Facebook。千万不要放松,保持自己的创造力。另外,你还可以找一个同伴/导师,相互学习的进步速度总比闭门造车的速度快很多。

当你真的专注于实践上面所提到各种方法的时候,你也许就在成为PHP专家的路上。

成为一名PHP专家其实并不难的更多相关文章

  1. 怎么才能成为一名PHP专家?

    本文作者Bruno Skvorc是一名资深的Web开发者.在这篇文章里主要是讲述成为一名专业的PHP专家所要经历的过程,以及在这个过程里要如何学习掌握技巧和对工具的舍取.(以下为编译内容) 当阅读各种 ...

  2. 怎样成为一名PHP专家?

    当浏览各类与PHP相关的博客时,比如Quora上的问题,谷歌群组,简讯和杂志,我经常注意到技能的等级分化.问题都类似于“我如何连接到MySQL数据库?”或者“我该如何扩展邮件系统才能在每小时发送超过一 ...

  3. 如何成为一名Top DevOps Engineer

    软件世界的战场 如果你对devops的概念不是很了解的话,没有关系,可以先跳到维基百科阅读一下DevOps条目.有了模模糊糊的概念之后, 我们先抛开所有市面上对于devops的各种夸大和炒作,首先来思 ...

  4. 如何成为一名AI工程师

    如何成为一名AI工程师 step 前端:js,html,找准方向开始累积知识! 计算机/数学专业 python anaconda IDE pycharm/jupyter 熟悉基础语法,了解数据结构 刷 ...

  5. 当年写的如何成为一名MSSQL DBA

    很多开发人员都想成为一名数据库培训,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我        做DBA工作和面试DBA时,整理的一些DBA方面的三十个问 ...

  6. 如何成为一名:黑客/Programmer/Python高手

    如何成为一名黑客 Eric Steven Raymond https://translations.readthedocs.org/en/latest/hacker_howto.html How To ...

  7. 如何成为一名hacker?

    很多人问我如何成为黑客,一般来说我总是会扯一大堆废话,告诉他们要时刻保持好奇心,要学会打破规则挑战权威之类的. 但这类话肯定不是提问者想听的.我揣摩了一下他们的心情,他们想问的应该是这个问题:如何学习 ...

  8. 如何成为一名JAVAEE软件工程师?(前言)

    笔者将会整理出一整套成为一个JAVAEE工程师的学习路线和资料.欢迎同行和网友们订阅或指正.不定期更新.         笔者在软件工作做了7年java开发,开发过ERP,CRM等应用系统并担任过项目 ...

  9. 成为一名Java高级工程师你需要学什么

    宏观上: 1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring等的源码.2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研.尾是指上线交付之后,包括维护阶段.3 ...

随机推荐

  1. Cobub无码埋点关键技术的实现

    随着大数据时代的到来,数据采集也已经变的越来越重要.前端埋点作为一个比较成熟的数据接入手段被广泛应用着.目前埋点分为两种方式,有码与无码埋点.有码埋点比较容易理解,即调用SDK的API,在代码中插入埋 ...

  2. redis基本指令

    1.键值相关命令       keys * 取出当前所有的key       exists name 查看n是否有name这个key       del name 删除key name       e ...

  3. UVA 10273

    我是用暴力过的,虽然网上说刘汝佳出的这道题考的是堆,我不太懂,..用暴力时间复杂度高一些,但是一样能过 所要注意的就是周期问题,因为只要同时存在某一天超过一头牛产奶量最小,就不会杀牛,而每头牛的周期和 ...

  4. IE浏览器F12调试模式不能使用或报错以及安装程序遇到错误0x80240037的解决办法

    记录一下,方便以后查找 IE浏览器F12调试模式不能使用: 需要下载补丁: 64位系统 然后下载安装,就能解决问题. 要是在安装时遇到出现: 安装程序遇到错误 0x80240037   解决方式 最后 ...

  5. Spring Cloud服务间调用鉴权

    学习使用Spring Cloud 微服务间的调用都是RestFul风格,如何保证调用之间的安全性,这是一个很重要的问题. 通过查阅资料http://wiselyman.iteye.com/blog/2 ...

  6. C/C++ 取整函数ceil(),floor()

    使用floor函数.floor(x)返回的是小于或等于x的最大整数.如:     floor(10.5) == 10    floor(-10.5) == -11 使用ceil函数.ceil(x)返回 ...

  7. LaTeX Windows配置

    1. 安装TeXstudio 用搜索引擎找合适的版本或者 在 https://sourceforge.net/projects/texstudio/ 下载 找合适的版本下载,点击下一步安装即可. Te ...

  8. Deep-Learning-with-Python] 文本序列中的深度学习

    https://blog.csdn.net/LSG_Down/article/details/81327072 将文本数据处理成有用的数据表示 循环神经网络 使用1D卷积处理序列数据 深度学习模型可以 ...

  9. 14. docker 网络 docker bridge0 详解

    1.创建一个 container docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done ...

  10. C#.NET中的ToString()数字格式化

    数字格式字符串-----货币-----.ToString("C");.ToString("c");例 2.5.ToString("c") - ...