这一篇文章是“Becoming a PHP Professional”系列 4 篇博文中的第 1 篇。php
当浏览各种与PHP相关的博客时,好比Quora上的问题,谷歌群组,简讯和杂志,我常常注意到技能的等级分化。问题都相似于“我如何链接到MySQL数据库?”或者“我该如何扩展邮件系统才能在每小时发送超过一万封邮件,而不须要引入新的服务器?”html
我将PHP能力水平分为4个等级(可能适用于任何编程语言或专业):初级、中级、专家和精英。html5
对于PHP初级者,他们学习如何使用变量,包含文件,表单处理等。他们学习简单的逻辑结构。在教程的指导下,实现了用PHP发送邮件,甚至触及了面向对象编程但却没有彻底理解它。他们还能修改WordPress的几个CSS文件。有了这些知识,他们就开始找工做,但不幸的是一般都会失败。jquery
专家是指那些经历过许多项目并有了丰富经验的人。他们已经开发了许多商业应用,但没有彻底使用框架来作。他们可以使用PHP与不一样的数据库进行高效地开发,以及经过会议来讨论解决问题的方案。他们熟悉设计模式,可以轻松地将项目的工程图用代码实现。他们远离过程式地编程。git
精英程序员是那些努力了10000+小时磨练本身专业技能的人。他们可以根据本身的须要编写PHP的扩展,只是瞧一下源代码文件就能发现BUG,而且很是了解本身的代码布局。他们只作最复杂的项目,而且可以找到可选的和富有创造力的方案来解决问题。他们已经写了一些深受欢迎的关于编程语言的书籍,开过几十次讲座,甚至可能拥有本身的PHP语言版本或者很是成功的框架,或二者都拥有。程序员
那么,谁属于中级呢?github
初学者怎样才能成为和超越专业人士?若是一我的不知道超出基本知识的东西,他如何能提升本身的技能,摒弃错误的开发方式和学习更先进的开发方法。这个问题是许多初学者向我提问过的。为了成为一个专家,他必须先成为中级者。mongodb
下面的列表中指出了一我的成为中级者所需经历的PHP学习路程:数据库
不少人认为使用了类就意味着在编写面向对象的代码,而使用了函数则意味着编写过程式的代码。然而这是错误的,为了支撑这一观点,咱们假设一个广为流传的定义:过程式代码是没有使用到类和对象的代码,而OOP代码是尽量地使用类和对象的代码。编程
个人建议是彻底放弃过程式代码。尽量地使用面向对象的风格编程-编写类,封装逻辑,考虑使用真实世界中的术语。相比适当的OOP代码所带给你的可重用性和将来开发者能方便地在你的项目继续开发的好处,过程式代码的性能优点显得微不足道。针对这个观点的反对声音是“可是,WordPress是过程式的!”。坦白地说,这听起来可能有点刺耳,“WordPress的开发者”并非真正的PHP开发者,比如拥有了Instagram 就会是摄影师同样。请不要认为这意味着WP是没用的—当你不但愿花太多时间开发一个博客,简单的站点和为期一天的小项目时,使用WP开发会让你感到惊奇。它很是适合于急于求成或者没有太多技术的人,但掌握WP绝对没法使你成为一个专业的PHP开发者—它使用意大利面条式的编码,教你的是不合适的设计原则。
从小事作起。想一想现实世界的概念,并尝试以OOP代码表示它。经过一些基本的教程,并慢慢地熟练掌握OOP。在过渡到合适的框架和朴所迷离的术语例如“模型”,“视图”和“控制器”以前,坚持用OOP思想编写代码直到你大致上理解了类-全部这些都是云里雾里,抽象术语在OOP中并无坚实的基础。
深刻到现有的你所能寻找到的源代码中。例如,查看PHP projects on Github,克隆它们,部署到本身的主机上而且试着去阅读代码。每个文件,每一行,直到你理解它们是作什么的。
寻找具有规范的注释,结构良好,并且还在不断开发的项目。在2008年以前更新的项目并非太好,若是你要开始使用PHP5.5的话—不然你可能会错过能使你在已经人口过剩的领域里脱颖而出的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开发者的路上。维持原则,毫不放弃(即便你身边有人放弃了)而且坚持实践。
若是你有一些有用的资源而且想要与咱们分享你是如何跨越(或正在跨越)中级开发者这道坎,请在下面留言,让咱们知道!