如何才能成为一名专业的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,等等。
尽早应用最佳实践
一个好的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专业开发者的路上。坚持原则,永不放弃(即使周围的人放弃了),持续练习。
- 信息图:iOS 7开发者需要知道的事
如果你想为iOS 设备开发app,你需要知道如何与软件交互,如何设计,你还要知道苹果独特的开发理念和开发工具.真正的能力还需要成功地从其他行业领域借鉴核心概念.最后把所有这些东西糅合进你的信息库中 ...
- 【转】开发者教程:如何将Android应用发布到Google Play(Android Market)官方市场
原文网址:http://www.chinaapp.org/game/5594.html 作为一个专业的App开发者网站,竟然没有一篇讲述如何将Android App发布到Google Play的教程, ...
- ios7开发者必知
如果你想为iOS 设备开发app,你需要知道如何与软件交互,如何设计,你还要知道苹果独特的开发理念和开发工具.真正的能力还需要成功地从其他行业领域借鉴核心概念.最后把所有这些东西糅合进你的信息库中, ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第1章节--SharePoint 2013 介绍 处理开发者需求 SharePoint本质上是一个平台.你 ...
- Unite洛杉矶峰会精彩回顾:从图形、平台再到VR
产品质量与工作流程 在Unity的研发过程中,保持创新的步伐与稳定性的平衡一直是一个挑战.Unity曾经向所有的用户承诺:Unity将专注于提升产品的质量并保证Unity版本稳定性的决心. 大会伊始, ...
- linux 学习之路
很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...
- iOS开发——高级篇——Parse 教程:网络后台基础
本教程已针对Swift, iOS 8.3, Xcode 6.3及最新的Parse SDK(1.7.1版本)更新. 网络后台支持可以为你的App添加许多崭新的功能:不论是数据同步,社交分享,还是云端存储 ...
- HTML5游戏开发进阶指南(亚马逊5星畅销书,教你用HTML5和JavaScript构建游戏!)
HTML5游戏开发进阶指南(亚马逊星畅销书,教你用HTML5和JavaScript构建游戏!) [印]香卡(Shankar,A.R.)著 谢光磊译 ISBN 978-7-121-21226-0 201 ...
- 开源搜索引擎Iveely 0.7.0发布,不一样,那就让他不一样!
2012年08月05日,Iveely Search Engine 0.1.0发布,今天,怀着对于未来的追求,终于,0.7.0如期和大家见面了,7个版本,历时2年4个月,感谢大家的支持,感谢我不离不弃的 ...
随机推荐
- java-FileDemo
关于file类的使用:文件的增删查 package com.example; import java.io.File; import java.io.IOException; public class ...
- Visual Studio 调试小技巧-从查看窗口得到更多信息(转)
原文地址:http://blog.csdn.net/cadcisdhht/article/details/5651488
- PHP编译configure时常见错误
PHP的安装虽然有时候很简单,可是如果应用一多,我们安装起来就很头痛了!出错最多的就是安装PHP扩展的时候了.其实不管是你是Apache类的应用还是Nginx类的,PHP的安装都不是很简单,虽然网上有 ...
- YII用户注冊和用户登录(二)之登录和注冊在视图通过表单使用YII小物件并分析
2 登录和注冊在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClie ...
- Linux Linux常用命令一
ls-查看文件信息 -ls是英文单词list的简写,其功能为列出目录的内容,使用户最常用的命令之一 -它类似于DOS下的dir命令 ls[参数] 目录或文件 常用的参数及含义 "-a&quo ...
- 第一百九十七节,jQuery EasyUI,LinkButton(按钮)组件
jQuery EasyUI,LinkButton(按钮)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 LinkButton(按钮)组件的使用方法,这个组 ...
- python 反射机制 ( 广泛应用于URL参数)
web实例 考虑有这么一个场景,根据用户输入的url的不同,调用不同的函数,实现不同的操作,也就是一个url路由器的功能,这在web框架里是核心部件之一.下面有一个精简版的示例: 首先,有一个comm ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集
1.snd_pcm_open,打开句柄. 2.配置参数,可能用到的接口:snd_pcm_hw_params_alloca.snd_pcm_hw_params_any.snd_pcm_hw_params ...
- MySQL设计之三范式
网上查找了一些资料,记录如下并加入自己的理解. 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有 ...
- Editor编辑器的一些用法
共有两个脚本,一个是有关Inspector面板的,一个是window的 using UnityEngine; using System.Collections; using UnityEditor; ...