如何才能成为一名专业的PHP开发者?资深Web开发者Bruno Skvorc在其博客上分享了一些心得。
当阅读各种和PHP相关的博客、Quora问题、Google+社区、资讯和杂志的时候,Bruno Skvorc注意到讨论的问题出现了两极分化的现象。例如“我如何连接到一个MySQL数据库?”,或者是“在不增加服务器的前提下,我如何使得邮件系统能够每小时发送超过一百万份电子邮件?”
Bruno Skvorc根据对PHP的使用能力将应用者分为四类:初级、中级、专业和精英。
两极
在PHP语言中,初级用户会用一些变量、includes
、表单处理,等等。还会学一些简单的逻辑结构。借助教程他们能用PHP发邮件,甚至他们可能接触到一些面向对象编程的例子,当然他们不一定理解背后的原理。他们使用WordPress,修改一些CSS类。他们凭着这些知识去申请工作,然后很不幸地被拒了。
PHP专业用户能让很多项目焕发生机。他们使用众多框架开发商业应用,高效地使用各种不同的数据库,参加各种研讨会,学习各种设计模式,很轻松地开发出一个完整的项目——从流程设计到最后运行。他们早已不再使用过程式编程范式了。
精英程序员就是传说中经过10000+小时磨练的专业人士,自己编写扩展来扩充自己部署的PHP的功能,只要粗略地浏览一下源文件就能抓出bug,对代码布局极为讲究,只认可极为复杂的项目,在别人还没察觉之前就找到解决问题的创造性的替代方案。他们还会写一些畅销的关于PHP语言的书籍,在大量研讨会上发言,甚至创建一个属于自己的PHP分支或者一两个非常成功的框架。
那么,那些中级用户在哪里?
缺失的一环
一个程序员如何从初级升到专业级甚至更高?如果一个人只会基础的编程知识,他如何提升自己的技能,舍弃糟糕的实践,使用高级的方式实践呢?初学者经常问Bruno Skvorc这个问题。要想成为一个专业的程序员,首先要成为一个中级PHP程序员。
接下来的列表指出了流畅地使用PHP需要注意的一些方面:
放弃意大利面式代码
很多人认为使用类就意味着是在编写面向对象的代码,而使用函数就意味着是在编写过程式代码。大错特错!让我们复习一下广泛意义上的定义:过程式代码就是不使用类和对象的代码,面向对象的代码就是尽可能多地使用类和对象。
Bruno Skvorc的建议是完全放弃过程式代码。尽可能多地采用面向对象风格——编写类,封装逻辑,考虑真实世界的术语。考虑到可复用性,过程式代码相对于基于类的代码的性能优势微不足道。适当的OOP代码可以让未来的开发者接手你的项目。通常人们会这么反驳:“但是,WordPress可是过程式的!”老实说(也许不好听),如果WordPress的开发者是PHP开发者的话,那Instagram的开发者可就是摄影师了。这并不意味着WP没什么用——对于博客、简单的网站和一天项目而言,WP很棒。用WP能很快地赚些小钱,对不太懂技术的用户而言也很好用。但是精通WP绝不意味着你是一个专业的PHP开发者——那就是一堆意大利面一样的代码,那些代码可没法教会你合理的设计原则。
从小事做起。思考现实世界的概念,尝试用面向对象的代码表达它们。学习一些基本的教程,再慢慢向高级方向发展。练习面向对象编程直到你真正理解类。在此之前,不要急着去学习各种框架,以及 MVC 之类的抽象术语。
钻研现有项目
不管你是在哪里看到的源代码,都要仔细钻研。例如,在Github里查找PHP项目,克隆下来,部署在自己的机器上,尝试加以修改。一个文件接着一个文件,一行代码接着一行代码,直到你真正理解它们的意义。
学习搭建的PHP环境
搭建PHP环境也是一项宝贵的技能。这不仅允许你调整优化自己的配置,还可以让你熟悉如何通过源码构建插件。
别用Windows开发——如果你的主要桌面是Windows,你需要安装一个虚拟机软件,然后运行一个Linux虚拟机——Windows的大小写敏感,行结尾,和大多数服务器环境不同的怪异之处,都会给你造成麻烦。所以最好在一个和服务器相似的环境下开发。
虚拟机也有利于实验——如果出现了问题,你可以重新开始或者回滚一下。你也可以尽情实验,而不用担心把一切搞砸。掌握工具的使用方法是很重要的,但有一个好的工作平台也同样重要。
用你自己搭建的环境做实验也可以让你熟悉不同的服务器——该用Nginx还是Apache,或者使用Appserver,等等。
尽早应用最佳实践
在编写自己代码的时候,要确保详细注释、完美缩进、仔细架构。在构建一个类、项目和库之后,使用知名的的文档工具(PHPDocumentor、ApiGen)来提取文档,并在此基础上加以改进。
一个好的IDE是很宝贵的,熟悉一个跨平台的编辑器有利于你在架设新环境后马上进入代码,而不是把时间浪费在设置键盘快捷键和主题上。确保你将IDE配置文件保存在云端,(例如Google Drive),这样即使你新安装了系统,你也可以很方便地导入它们。Bruno Skvorc推荐PHPStorm和Netbeans这两个跨平台的IDE,后者是免费的。
早一点适应最佳实践能够帮助你在项目进程里保持一致,更有助于别人流利地阅读你的代码。找到你的风格并坚持下去——这对你自己和别人都有好处。尽可能严格遵循PSR标准(PSR-0、PSR-1、PSR-2、PSR-3)。标准可不是徒有虚名。大部分人遵循这些标准,喜爱这些标准,因为它们增加了每个人的代码的可复用性和可读性。
对于初学者来说,PHP之道是一个非常有用的资源,提供及时的指引。通过此书,你可以熟悉最新的最佳实践,面向对象的基本概念,安全,部署,代码标准,等等。
尝试不同的框架后做出选择
很久以来,PHP是一个具备最多框架的编程语言(JavaScript最近已经赶上了)。很难说这到底是意味着社区的分裂还是语言的流行。但事实是,选择一款框架是一个很纠结的事情,尤其是在刚开始的时候。
试用了大多数框架之后,Bruno Skvorc推荐稳定优质的Phalcon框架。其实Phalcon是用C语言编写的,可以当作PHP扩展安装,因此比现存的框架都要快。无论如何,尝试使用不同的框架绝对是很有必要的。
当你尝试不同框架的时候,你每次都能学到解决常见问题的新方式。每个框架都有自己的特性和坑,但是最重要的是,你能学到别人(主要是框架开发者)的思路。你将接触新的用法和方式,用所有你能找到的框架重构你的项目是一个非常好的练习。这将帮助你有效地衡量某个特定框架的效率:开发的速度和性能。
阅读
千万不要忽略别人给你的提示和小建议。尽可能多地阅读。订阅好的博客,阅读网站上的教程,在StackOverflow上面阅览问答,订阅邮件列表,关注Google+上的优质资源。但是要避免PHP基础教程类的书本,它们很快就会过时。相反,要关注网上有用的、最新的代码片段和教程。即使是已经接触过的主题也可以再读一遍,常常能从别人的观点里领悟出新的想法。
如果没有工作,那就发明一些出来
总有事情可做。永远别对自己说:“我没有一个项目。”更别对自己说:“我很无聊。”如果你找不到什么项目做,那就开一个新的。你是不是因为天天使用的工具缺乏某个功能而沮丧?做一个更好的替代品!没有新产品的创意?那就重复已有的创意——尝试重建一个基本的facebook,重新创建一些你已知的项目来练手。
最重要的是永远别停——如果你停下了,就不会有惊人的一万小时了!持续地工作,维持自己的兴趣,持续投入。做一个简单的地址薄应用。然后用别的框架重构一下。然后再换个数据库(比如将 MariaDB 换成 Mongo)。保持忙碌!
找一个伙伴或者指导者
和人合作学习起来更容易。寻找一个和你一样有激情的伙伴。也许你是少数好运气的人,能找到一个能和你分享极客兴趣的伙伴。也许你在学校里,能找到一个想开始学习也需要伙伴的同伴。你甚至可以找一个指导者,接受一些专业指导。
永远不要低估陪伴的力量!
结论
当你专注于实践上面所提到各种方法的时候,你就在成为PHP专业开发者的路上。坚持原则,永不放弃(即使周围的人放弃了),持续练习。