#深圳# 6月10日 亚马逊AWSome Day云计算免费培训报名中php
在WEB开发世界里,PHP是最流行的语言之一,从PHP里,你可以很容易的找到你所需的脚本,遗憾的是,不多人会去用“最佳作法”去写一个PHP程序。这里,咱们向你们介绍PHP的10种最佳实践,固然,每一种都是通过大师们证实而得出的。html
1. 在合适的时候使用PHP – Rasmus Lerdorf程序员
没有谁比PHP的建立者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界。但是,Rasmus并非所以而建立PHP的。PHP是为了解决WEB开发者的实际问题而诞生的。web
和许多开源项目同样,PHP变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它彻底能够做为一个案例,一个解决各类Web问题的工具需求所引发的案例,所以当PHP刚出现的时候,这种工具需求所有聚焦到PHP的身上。数据库
可是,你不能奢望PHP能够解决全部问题。Lerdorf是第一个认可PHP只是一种工具的人,而且PHP也有不少力所不能及的状况。编程
根据工做的不一样来选择合适的工具。我跑了不少家公司,为了说服他们部署和使用PHP,可是这并不意味着PHP对全部问题都适用。它只是能够一个解决大部分问题的front-end脚步语言。缓存
做为一个web开发者,尝试用PHP解决全部问题是不科学的,同时也会浪费你的时间。当PHP玩不转的时候,不要犹豫,试用一下其余的语言吧。安全
2. 使用多表存储提升规模伸缩性 – Matt Mullenwegruby
没有人愿意质疑Matt Mullenweg在PHP方面的权威性,他开发了这个星球上最流行的blog系统,(依靠一个强大的社区力量支持): WordPress. 建立Wordpress之后,Matt和他的团队启动了WordPress.com平台,一个基于WordPress MU的免费blog站点。如今,Wordpress.com已经拥有大约400万用户, 这些用户天天提供超过 140,000篇的日志。 (要查看更多Wordpress.com的统计状况,请点击这里.)服务器
若是有人知道如何让网站的规模伸缩自如,这我的必定是Matt Mullenweg。2006年的时候 Matt对Wordpress的数据结构进行了前瞻性的改进,而且解释了为何Wordpress MU对每一个blog使用独立的MYSQL表格, 而不是把全部的blog数据都塞进一个巨大的表格。
咱们测试过这个方法,可是发现若是要扩展它的伸缩性,代价过高。若是用一个总体的数据结构,在大流量面前,你将会面临服务器硬件的问题。在MU里面。用户们都被分布到独立的表格当中,而且能够轻易地组织起来。举个例子,WordPress.com把用户的数据分散存储到4096个数据库中,这些数据库能够分散大规模的数据访问,实现流量和压力分流。
数据表的可迁移性让代码(blog)能够运行得更快,而且让系统具有更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略, Matt向人们展现了时下最流行的Facebook和Wordpress.com均可以在PHP下稳定运行,而且处理惊人的访问量。
3. 千万不要相信用户 – Dave Child
Dave Child是Added Bytes (previously ilovejackdaniels.com) 网站的核心人物,这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave为不少英国的公司服务,而且已经在编程世界里树立起至关的权威。
Dave为PHP开发者提供了不少深谋远虑的建议,并总结成了《writing secure code in PHP》:千万不要相信你的用户,他们甚至可能会伤害你。
有一条web开发的基本原则,我重复多少遍都以为不够,那就是:千万不要相信你的用户,同时要假设你网站中的每一个数据单元都是从用户那里收集来的恶意代码。不少时候,你必须用JAVAscript在客户端检验表单提交过来的内容, 若是你习惯了如此,那么,这是一个好习惯。若是安全性对你来讲很重要,这就是最重要最须要学习的原则。
Dave目前正致力于为它的《Writing Secure PHP》系列书籍整理实例,书的最后他说:
最后,变得偏执一点吧。除非你认为你的站点永远不会受到攻击,不然就正视全部的问题,当问题真正发生的时候,你的状况会变得很糟。你须要把每一个用户都当作会带来一场攻防站的黑客,想尽一切办法来保护站点的安全,同时想好相应问题的解决方案。
4. 多使用PHP缓存 – Ben Balbo
Ben Balbo开发了Site Point,一个为developers和designers提供指导的网站。他是墨尔本PHP开发和开源俱乐部的成员, 所以他对PHP有必定的了解,同时对PHP caching有必定的想法和经验。
若是你拥有一个访问量很大,但更新并不频繁的站点(好比blog,基于某种CMS),或许它须要进行一些改造,这些改造不会花费太多的时间,可是对性能有突出的贡献。 若是要为一个复杂/更新频率很快的站点创建缓存机制,过程可能会很曲折,可是好处也是显而易见的。
PHP缓存技术有不少种,Ben为咱们推荐了以下一些:
◆缓存函数的运行结果
◆设置过时时间
◆缓存IE下载的文件
◆模板缓存技术
◆Cache_Lite
因为PHP做为动态语言的特性,缓存机制对于更新频率并不快的站点来讲很是重要。
5. 使用IDE, Templates和Snippets加速PHP开发 – Chad Kieffer
当Chad Kieffer从UI设计和数据库优化的工做中抽身出来的时候,他会在他的博客2 tablespoons上分享不少技术经验。因为Chad多方面的全面发展,他常常能够发现其余程序员不能发现的问题,并造成相关经验,尤为是他开发网站的方法。他参与了网站开发的各个环节,所以他的建议对于提升网站开发的大局观很是有用。
Chad认为使用Eclipse PDT(Eclipse’s PHP development package) 这样的IDE,同时使用一些模板技术和开源项目能够有效地提升PHP的开发速度。
紧凑的计划,长长的to do lists以及deadlines让开发人员很是苦闷。不过有些功能,好比Eclipse Templates,能够有效减小编码的时间和出错的概率。
一般来讲,任何项目均可以自动化,自动化程度越高, 你完成项目的时间就越短。花时间来开发使用频率很高的框架和模板,将会节省你之后更多时间。同时,使用像Eclipse and the PDT package这样的IDE,你会发现效率获得明显提升,IDE能够自动闭合,补全分号而且能够在本地debug。
6. 利用好PHP的过滤函数 – Joey Sochacki
或许Joey Sochacki并不像Matt Mullenweg那样有名 ,但他也是一个经验丰富的开发者,而且经过他的博客Devolio分享了不少技术经验
Joey发如今编写php代码的过程当中有不少地方须要进行过滤,但却并无太多的coder关注php的内置过滤函数。
过滤数据是咱们常常须要作的事情,可是不少功能丰富的PHP内置过滤函数却鲜为人知。使用相似filter_* 的PHP内置函数,咱们几乎能够处理全部的过滤任务,包括数据类型验证/URL/email和IP地址验证/特殊字符处理等等。
过滤是一件复杂的事情,可是我相信joey的发现会给你不少启发,让你认识到PHP强大的过滤功能。
7. 使用PHP框架 – Josh Sharp
对因而否应该使用Zend, CakePHP, Code Igniter, 或者 其余PHP框架,一直存在着不少争议,可是在web开发者的心中,他们有本身衡量的标准。
Josh Sharp本身建立了一家提供面包和黄油服务的网站,所以他对于使用PHP框架来开发网站有必定的经验。他认为使用一个PHP框架来进行项目开发(use a PHP framework ),能够有效地节省时间,而且减小出错的概率。为何?由于他以为PHP实在是太好上手了。
PHP的易于使用有时候也有缺陷,由于并不严格的语法,常常会致使不少错误代码的诞生。但若是使用一个PHP框架,出错的概率就会大大减小。
PHP框架可让你的代码结构更加规范,而且节省大量时间。
8. 不要使用PHP框架 – Rasmus Lerdorf
与Josh的观点偏偏相反,PHP的鼻祖Rasmus Lerdorf却认为最好不要使用PHP框架,为何?由于不基于框架的PHP性能更好。Rasmus在Drupalcon 2008的演讲上,用“Hello World”的例子来对比了一些框架PHP和简单PHP之间的性能,结果显示框架PHP的性能要远远落后。
9. 使用批处理 – Jack D. Herrington
Jack Herrington对PHP世界并不陌生, 而且为大名鼎鼎的IBM developerWorks贡献过超过30篇的专搞, 同时出版过《PHP Hacks》的书,所以他是一个真正的专家。
Herrington推荐使用批处理和Cron来代替那些能够运行在后台的程序脚步,Web用户并不肯意在线等待你的处理过程,因此有些事情更适合放到后台来处理。
诚然,在某些状况下,这有点大材小用了,可是你能够清楚地看到,使用Cron, MySQL, PHP面向对象的方法以及Pear::DB这些便捷的工具来建立一个批处理工具并非一件复杂的事情。
Jack认为使用cron, PHP和MySQL在后台处理一些任务,比起多进程的业务逻辑要划算得多。
两种方法我都尝试过,我认为Cron很是符合”Keep It Simple, Stupid” (KISS) 的原则,它让后台处理变得简单。与多进程的业务逻辑相比,它没有内存溢出的风险。你能够建立一个简单的批处理脚本,而且在cron中运行,这个脚本会定时检查是否有任务须要处理,处理完以后就会自动退出,所以你不用担忧是否有进程卡壳,或者陷入死循环。
10. 及时启用错误报告 – David Cummings
David Cummings有一个专门提供CMS软件服务的公司 ,而且得到过几回奖 ,他有很是丰富的PHP开发经验。David曾经写过《two PHP tips he wished he’d learned in the beginning》,其中一点就是:及时启用错误报告,这会节省大量的时间。
我告诉人们,最重要的事情就是最大程度地开启PHP的错误报告,为何?由于PHP可能会隐藏不少小问题:
◆变量没有预约义
◆在代码片断中引用了不可用的变量
◆使用了未定义的常量这些因素看起来并非什么大事,除非你在使用面向对象的方法编写一些类库。一般,关闭错误报告将可能使你付出更大的成原本维护你的代码。
错误报告能够帮你轻易地找到代码的问题所在,若是错误报告的等级够高,细微的错误都能被当即发现,帮助你节省总体debug的时间。