成为一个 PHP 专家:缺失的环节 - 开源中国社区
成为一个 PHP 专家:缺失的环节
oschina 2014年02月27日

成为一个 PHP 专家:缺失的环节

oschina oschina 发布于2014年02月27日 收藏 214 评论 54

有免费的MySQL,为什么还要买? >>>  

这一篇文章是“Becoming a PHP Professional”系列 4 篇博文中的第 1 篇。

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

我将PHP能力水平分为4个等级(可能适用于任何编程语言或专业):初级、中级、专家和精英。

等级

对于PHP初级者,他们学习如何使用变量,包含文件,表单处理等。他们学习简单的逻辑结构。在教程的指导下,实现了用PHP发送邮件,甚至触及了面 向对象编程但却没有完全理解它。他们还能修改WordPress的几个CSS文件。有了这些知识,他们就开始找工作,但不幸的是通常都会失败。

专家是指那些经历过许多项目并有了丰富经验的人。他们已经开发了许多商业应用,但没有完全使用框架来做。他们能够使用PHP与不同的数据库进行高效地开发,以及通过会议来讨论解决问题的方案。他们熟悉设计模式,能够轻松地将项目的工程图用代码实现。他们远离过程式地编程。

精英程序员是那些努力了10000+小时磨练自己专业技能的人。他们能够根据自己的需要编写PHP的扩展,只是瞧一下源代码文件就能发现BUG,并且非常了解自己的代码布局。他们只做最复杂的项 目,并且能够找到可选的和富有创造力的方案来解决问题。他们已经写了一些深受欢迎的关于编程语言的书籍,开过几十次讲座,甚至可能拥有自己的PHP语言版 本或者非常成功的框架,或两者都拥有。

那么,谁属于中级呢?

缺失的环节

初学者怎样才能成为和超越专业人士?如果一个人不知道超出基本知识的东西,他如何能提高自己的技能,摒弃错误的开发方式和学习更先进的开发方法。这个问题是许多初学者向我提问过的。为了成为一个专家,他必须先成为中级者。

下面的列表中指出了一个人成为中级者所需经历的PHP学习路程:

放弃意大利面条式的代码

很多人认为使用了类就意味着在编写面向对象的代码,而使用了函数则意味着编写过程式的代码。然而这是错误的,为了支撑这一观点,我们假设一个广为流传的定义:过程式代码是没有使用到类和对象的代码,而OOP代码是尽可能地使用类和对象的代码。

我的建议是完全放弃过程式代码。尽可能地使用面向对象的风格编程-编写类,封装逻辑,考虑使用真实世界中的术语。相比适当的OOP代码所带给你的可 重用性和未来开发者能方便地在你的项目继续开发的好处,过程式代码的性能优势显得微不足道。针对这个观点的反对声音是“但是,WordPress是过程式 的!”。坦白地说,这听起来可能有点刺耳,“WordPress的开发者”并不是真正的PHP开发者,好比拥有了Instagram 就会是摄影师一样。请不要认为这意味着WP是没用的—当你不希望花太多时间开发一个博客,简单的站点和为期一天的小项目时,使用WP开发会让你感到惊奇。 它非常适合于急于求成或者没有太多技术的人,但掌握WP绝对无法使你成为一个专业的PHP开发者—它使用意大利面条式的编码,教你的是不合适的设计原则。

从小事做起。想想现实世界的概念,并尝试以OOP代码表示它。通过一些基本的教程,并慢慢地熟练掌握OOP。在过渡到合适的框架和朴所迷离的术语例如“模型”,“视图”和“控制器”之前,坚持用OOP思想编写代码直到你大体上理解了类-所有这些都是云里雾里,抽象术语在OOP中并没有坚实的基础。

剖析现有项目

深入到现有的你所能寻找到的源代码中。例如,查看PHP projects on Github,克隆它们,部署到自己的主机上并且试着去阅读代码。每一个文件,每一行,直到你理解它们是做什么的。

寻找具备规范的注释,结构良好,而且还在不断开发的项目。在2008年之前更新的项目并不是太好,如果你要开始使用PHP5.5的话—否则你可能会错过能使你在已经人口过剩的领域里脱颖而出的PHP最新和最强大的特性。

学会搭建自己的PHP开发环境

如果能够建立自己的环境是非常不错的能力。自己搭建环境时不仅允许你根据实际情况进行一些微小的调整,还能让你熟悉如何从源代码构建扩展。

放弃在Windows上开发—如果你主要的桌面环境是Windows,那么安装个虚拟软件和运行一个Linux虚拟机—Windows中不区分大小写,它的行结束符,以及其他的一些东西与大多数服务器环境并不相符,在Windows上开发只会出现许多麻烦,所以最好在一个你最终运行项目的系统上进行开发。

虚拟机还可以帮助你进行一些实验-如果出现错误,你可以重新开始或者进行回滚。你可以尽可能多低去尝试,只要你想,而不必担心把事情搞乱了。掌握工具固然重要,但有一个良好的工作平台也是很重要的。

自己进行实验也能让你熟悉不同的服务器—是否使用Apache或者Nginx,还是使用Appserver等。

尽早地进行最佳实践

当编写代码的时候,请确保你有充足的文档注释,精美的缩进和良好的结构。当你构建一个类、项目或库的时候,使用众所周知的文档工具(PHPDocumentor, ApiGen)来提取你的文档注释并加以改进。

一个好的IDE也是非常值得的—使用一个跨平台的编辑器能帮助你在任何时间建立一个新的开发环境时,保证你将注意力集中在编写代码而不是把时间浪费 在修改键盘快捷键和主题上。确保你备份了IDE的配置文件到谷歌云服务等地方,这样你就可以随时导入你的配置文件进行全新安装。一个好的IDE是PHPStorm,或者如果你买不起,或者没有需要免费许可的开源项目,Netbeans是一个好的选择,并且两者都是跨平台的。

尽早的进行最佳实践能帮助你的代码保持一致,以及其他人能够更加流畅的阅读你的代码。找到你的风格,并坚持下去-你帮助到的将不只是你自己,还有他人。试着遵循PSR标准(PSR-0, PSR-1, PSR-2, PSR-3)—它们能成为标准是有原因的。我们大多数人都使用并且喜爱这些标准,它让每个人的代码都具有良好的可重用性和可读性。

对于一个初级者非常好的且不断更新的资源是PHP the right way—学习它将能熟悉最新的实践,基本的OOP,安全,部署,编码标准等我所提到的,甚至更多。

尝试不同的框架,然后选择一个

长期以来,PHP是大多数框架使用的语言(最近JavaScript成为了最多者)。这是否说明我们的社区或者语言的流行程度不一致,我也说不清,但事实仍是,选择一个框架是一项艰巨的任务,特别是第一次开始选择。

尝试过了其中的大部分框架,我可以全心全意推荐Phalcon框架,因为它具有不错的鲁棒性和质量,而事实上,它是用C编写的并作为PHP的扩展被安装(因此比现在的任何框架都要快)。然而,亲自尝试不同的框架是很有必要的。

当你尝试不同框架的时候,你会发现对于同样的问题可以用新的方法解决。每个框架都有你所喜欢的优点和你所厌恶的缺点,但更重要的是,你将能了解到他人的心态(尤其是框架的开发者)。你会看到新的用法和方法,并且最好的实践是使用尽可能多的框架重构相同的实验项目。这将帮助你有效地衡量一个特定框架的功效:使用它进行开发的速度和它的性能。

别低估别人的提示和技巧。尽可能多地阅读—如果你一直坚持着,它并不会花费你所想象的那么多时间。找一个好的博客并跟随它,阅读本站的指南,遍历StackOverflow的问题和答案,访问SitePoint论坛,订阅简讯,跟随在Google+上的良好资源。避开基本的PHP教程书籍—因为在它们一出版的时候就过时了—相反,专注于你所能在网上找到的含有最新代码的片段和指南。即使遇到你已经学习过的话题,试着阅读下—通过阅读他人对于同一个问题的观点,你经常会发现一些新的东西。

如果没有什么事可以做,试着创造一些

总是有事可做。永远不要说“我没有项目可做”,或者更糟的“我很无聊”。如果你没有一个正在进行的项目可以做—那就创造一个。你每天使用的工具是否让你感到受挫因为它不完善的功能?自己做出一个更好的!对新产品没有想法?那就复制一个现有的—试着重建一个基本的FaceBook,重建一些你已经知道了的,为了能够实践一下。

最重要的是永不停止—如果不珍惜每一个小时,你将不可能积累到10000小时!继续努力,保持自己的兴趣和参与热情。做一个简单的地址簿应用。然后用另外一个框架重建它。并且使用不同的数据库(例如使用Mongo代替MariaDB)。保持忙碌!

找到一个搭档/导师

如果有人能和你一起的话,学习会变得更加容易。找到能够与你共享激情的搭档。也许你就是那幸运的少数人之一,已经拥有一个搭档共享你的独特兴趣。也许你在学校或者大学里有一个同行愿意和你一起开始并努力学习。你甚至可以找到一个导师,并接受专家的指导。

不要低估搭档的力量—三人行必有我师焉!

总结

当你专注于所有这些条目并且尽可能地掌握它们时,当你意识到这就是你所想要的,那么请坚持下去—你正走在成为一个高级PHP开发者的路上。维持原则,绝不放弃(即使你身边有人放弃了)并且坚持实践。

如果你有一些有用的资源并且想要与我们分享你是如何跨越(或正在跨越)中级开发者这道坎,请在下面留言,让我们知道!

原文链接: SitePoint   翻译: 伯乐在线 - rokety
译文链接: http://blog.jobbole.com/56560/

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:成为一个 PHP 专家:缺失的环节
分享
评论(54)
最新评论
0

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“野草”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器

QQ登录算是什么神器啊?
一段代码就可以搞定了!
现在很多BBS系统都有QQ登录的

国内目前最好的就DZ和PHPWIN。但PHPWIN 处于半死不活的状态。所以DZ是比较好选择的。客户间知名度也有。你说一段代码解决,这是程序员之间的理解。客户是不知道还有比DZ更好的产品存在滴。

非程序员出身的站长和做网站开发的小公司只做DZ,任何站都用DZ做
有人居然能提到typecho……这是有多烂
0
mark
0

引用来自“摔死的鸟”的评论

引用来自“野草”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器

QQ登录算是什么神器啊?
一段代码就可以搞定了!
现在很多BBS系统都有QQ登录的

国内目前最好的就DZ和PHPWIN。但PHPWIN 处于半死不活的状态。所以DZ是比较好选择的。客户间知名度也有。你说一段代码解决,这是程序员之间的理解。客户是不知道还有比DZ更好的产品存在滴。

非程序员出身的站长和做网站开发的小公司只做DZ,任何站都用DZ做
0
因为它具有不错的鲁棒性和质量
0

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器

QQ登录怎么是神器了?接个QQ,微博啥的第三方登录很难么。。。
0

引用来自“苏格兰威士忌找不到了”的评论

引用来自“包菜兄”的评论

好长,看不完。

你应该用 read later 然后用手机看

pocket
0

引用来自“包菜兄”的评论

好长,看不完。

你应该用 read later 然后用手机看
0
一个致力于技术本身的学生可以这样想,但并非所有人所有项目,就这篇文章而言,已经有点为了技术而技术了,至少,这篇文章不是面向对象的
0
不错的文章~很有指导意义~赞~
0
make
0
虽然不明白你们在说什么,但是感觉好厉害的样子~
0

引用来自“野草”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器

QQ登录算是什么神器啊?
一段代码就可以搞定了!
现在很多BBS系统都有QQ登录的

国内目前最好的就DZ和PHPWIN。但PHPWIN 处于半死不活的状态。所以DZ是比较好选择的。客户间知名度也有。你说一段代码解决,这是程序员之间的理解。客户是不知道还有比DZ更好的产品存在滴。
0

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

我也很鄙视的,一坨坨的,防止二次过度开发,很多东西绕来绕去的,
0

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器

QQ登录算是什么神器啊?
一段代码就可以搞定了!
现在很多BBS系统都有QQ登录的
0

引用来自“梅开源”的评论

“他们远离过程式地编程。”看到这个就觉得有点傻,又不是搞java,难道处处面向对象不成,难道处处面向对象都好不成

面向对象不是面向过程的取代品,但绝对是比面向过程更优秀的选择。这是整个软件业发展的趋势,自然而然现成的,不是某个组织强推的,也不是程序员犯傻发明的。好的东西自然会发展,不好的东西自然会被冷落。50多年了还没热起来的LISP就是个反例
0

引用来自“梅开源”的评论

“他们远离过程式地编程。”看到这个就觉得有点傻,又不是搞java,难道处处面向对象不成,难道处处面向对象都好不成

同意,我喜欢过程方式……过程方式程序模块之间管理的好的话也不会存在开发效率问题。而且这样少了框架学习成本。初学的PHP开发者也可以很快适应。当然也不反对OOP方式。
0

引用来自“南湖船老大”的评论

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ

有个关键,在国内就没有用户数能超过DZ的。。。qq登陆是个神器
0

引用来自“首祚”的评论

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。

有技术实力的都不鸟DZ,不用DZ做社区的也太多了。OSC,iteye,不都不是DZ么。作为PHP论坛,丁香园用的也不是DZ
0

引用来自“摔死的鸟”的评论

引用来自“首祚”的评论

引用来自“南湖船老大”的评论

说的很中肯,客观,不讳疾忌医。尤其认同其对WP的看法,不像有些脑残粉,把WP和DZ这类意大利面条的程序捧上天,只要你说他们不好,这些脑残粉就跳出来说,“WP不好?DZ不好?你知道他们有多流行么?你还只是个孩子,你懂什么叫模块化?”

我一直鄙视WP和DZ的代码,终于找到知音了

纯鄙视没用~要做一款产品干掉他们才是最牛逼的。我也鄙视DZ。但我没精力去写。

去支持其他能干掉它们的开源项目吧,typecho貌似有希望,至于DZ太多能干掉它的了。。。
0
如果说是“初级、中级、高级、专家”,相对更顺些。
国外的专家相对比较容易被封。国内也开始学,所以国内的专家在民众看来水平远远达不到期望值。
作为学习者来说,没必要加入杂念,只有不停的学。没有任何一个行业的专家象IT行业这样不稳定,几天不学,有些新信息和知识(注意,不是能力)就肯定连一个新手都不如。所以没有极大的热情,根本不适合从事。
顶部