`
gaotong1991
  • 浏览: 93031 次
  • 来自: 北京
社区版块
存档分类
最新评论

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

php 
阅读更多

这一篇文章是“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开发者的路上。维持原则,绝不放弃(即使你身边有人放弃了)并且坚持实践。

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

1
0
分享到:
评论

相关推荐

    用php实现的专家系统

    1. 毕业设计:对于计算机科学专业的学生来说,使用PHP构建专家系统是一个很好的实践项目,既能巩固编程技能,又能学习人工智能的基本原理。 2. 软件开发:在企业级应用中,PHP专家系统可用于提供决策支持,如故障...

    php:php5.dll

    php5.dll是PHP 5版本的核心组件之一,是一个动态链接库,其中包含了PHP解释器和其他必要的功能模块。 **php5.dll的作用** php5.dll是PHP解释器的核心部分,它负责解析PHP代码并将其转换为可执行的机器指令。在...

    php加密 微盾PHP加密专家

    "微盾PHP加密专家"是一款专为PHP开发者设计的代码加密工具,旨在确保源代码不被轻易阅读和篡改,增强代码的安全性。这款软件能够将PHP源代码转化为难以理解的乱码形式,使得在不拥有解密密钥的情况下,他人无法读懂...

    PHP毕业设计课程环节学生成绩评价系统源码.zip

    学生每完成课设环节的一个步骤就上传一次作业。 第一步:需求分析环节,学生上传需求分析文档。 第二步:课程资源分析,学生上传课程分析文档。 第三步:学习目标,内容设计,学生上传相关文档。 第四步:课程实践...

    威盾PHP加密专家——php代码加密软件

    "威盾PHP加密专家"是一款专为PHP开发者设计的代码加密工具,旨在保护PHP源代码不被轻易查看、复制或篡改,从而防止知识产权被盗取,保护开发者或企业的核心竞争力。 【描述】:“不必担心虚拟主机管理员看你的...

    微盾PHP加密专家(PHPCodeLock)PHP加密解密工具

    微盾PHP加密专家(PHPCodeLock)是一款优秀的 PHP 脚本加密软件,服务器端无需安装任何第三方组件,加密后的文件可运行于任何普通 PHP 环境下。 主要功能: 加密后的脚本能运行在普通 PHP 4 或者 PHP 5 环境。 你的...

    php和postgresql从小工到专家

    《PHP和PostgreSQL从小工到专家》是一本深入探讨PHP编程与PostgreSQL数据库结合应用的专业书籍,适合初学者和有经验的开发者提升技能。书名中的"从小工到专家"暗示了本书旨在全面覆盖从基础到高级的PHP与PostgreSQL...

    PHP课程环节学生成绩评价系统源码(毕业设计).zip

    PHP开发的课程环节学生成绩评价系统,多个角色登录,超级管理员,管理员,教师,学生。 PHP开发的课程环节学生成绩评价系统,多个角色登录,超级管理员,管理员,教师,学生。 PHP开发的课程环节学生成绩评价系统...

    php+mysql专家编程源码

    《PHP+MySQL专家编程》内容简介:构建当前需求最严苛应用程序的最佳实践和专家技能,作为世界上最流行、最通用的开放源代码脚本语言,PHP经常会与My SQL一起被用于构建大业务量、处理关键任务的应用程序。...

    phpcms 表单缺失的代码

    在PHP CMS开发中,表单处理是一个至关重要的环节,它涉及到用户交互、数据收集与存储。"phpcms 表单缺失的代码"这个问题通常是指在安装或使用phpcms时,某些与表单处理相关的代码或者类文件没有正确地被包含或者执行...

    PHP 导出Excel (注:导出带图片的EXCEL也支持)

    3. **添加工作表**:一个工作簿可以包含多个工作表,你可以根据需求创建多个。 ```php $worksheet = $spreadsheet->getActiveSheet(); ``` 4. **写入数据**:在工作表中插入文本、数字或日期等数据,可以使用`...

    PHP本科毕业设计课程环节学生成绩评价系统源代码.zip

    (一个学生只能选择一个题目,一个老师可以发布多个个题目,题目数量和学生数量为1:1)。学生根据老师发布的题目进行选题,一个学生只能选择一个题目。 安装 已经安装过,下载下来部署到环境即可 vendor目录没有上传...

    php和ajax+google map从小工到专家

    《PHP与Ajax结合Google Map:从小工到专家》不仅是一本技术指南,更是一部成长手册,它旨在帮助读者从零开始,逐步掌握构建Web地图应用所需的各种技能,最终成为这一领域的专家。无论你是初学者还是有一定基础的...

    iis缺失文件大全,多大三十个

    IIS(Internet Information Services)是微软提供的一个用于Windows操作系统上的Web服务器软件,它允许用户发布网页、应用程序和服务。"iis缺失文件大全,多大三十个"这个压缩包文件集合了IIS安装过程中可能缺少的...

    PHP-ml 一个 PHP 的机器学习库.zip

    PHP-ml是专门为PHP设计的一个开源机器学习库,它旨在为PHP开发者提供易于使用的工具,以便在PHP环境中进行数据挖掘和机器学习。这个库涵盖了多个机器学习领域的核心概念,包括监督学习、无监督学习、聚类、回归和...

    基于PHP的爱特全能网站文件专家.zip

    综合以上信息,我们可以推测"基于PHP的爱特全能网站文件专家"是一个功能丰富的Web开发工具,专注于网站文件管理。它可能包括文件的上传和下载接口、文件权限管理、文件搜索功能、代码编辑器,甚至可能有版本控制集成...

    LuoBen.Net独立网店专家 v1.1 php

    【标题】"LuoBen.Net独立网店专家 v1.1 php"是...通过这些知识点,我们可以了解到LuoBen.Net独立网店专家 v1.1 php是一个功能完善的电商解决方案,结合了PHP的高效性和易用性,为用户提供了便捷的网店搭建和管理工具。

    libssl.so.10缺失库文件的解决办法.doc

    以下是一份详细的解决步骤,适用于遇到此类问题的用户。 首先,我们需要确认当前系统中libssl库的实际版本。打开终端并输入以下命令: ```bash ls -l /usr/lib64/libssl.so* ``` 如果系统是32位的,路径应改为`/...

    phpWord,php生成word文档,替换word内容重新生成

    `phpWord`是一个PHP库,它允许开发者通过纯PHP代码来创建、修改和读取`.docx`格式的Word文档,从而实现数据的导出或者自定义报告的生成。在本场景中,你提到的需求是将学生信息导出到Word文档,并能更新文档内容后供...

    介绍围绕PHP的相关资料,包括PHP入门知识,PHP框架,开发工具,PHP项目,PHP笔试,面试及开发的相关经验等.zip

    总的来说,这个压缩包提供的资料可以帮助你从零开始,逐步成为PHP开发的专家。无论是学习基础知识,还是深入研究框架、工具,或是准备面试,都提供了丰富的资源。通过系统学习和实践,你将在PHP的世界里游刃有余。

Global site tag (gtag.js) - Google Analytics