11个PHPer必须要了解的编程规范


Posted in PHP onSeptember 22, 2014

本文将讨论常用的良好的代码习惯,或者称为代码规范,在PHP领域。

1,错误报告开启

错误报告是在PHP中一个非常有用的功能,应同时在开发阶段启用。 这可以帮助我们确定我们的代码中的问题。 最常用的功能是“E_ALL”,这有助于我们发现所有的警告和严重错误。 必须指出的是,我们把我们的代码投入上线前,我们应该关闭这个功能提示,否则会在浏览器上的暴漏所有潜在错误及警告。

2,使用DRY原则

‘Do not Repeat Yourself',DRY原则指的是不要重复你的代码.。 这个概念是一个非常有用的编程概念,可硬应用在任何编程语言,如Java,C#或PHP均可以。 使用DRY原则,确保我们在程序中没有冗余的代码。
违反 DRY 原则的解决方案通常被称为 WET,指代“write everything twice”,我们写的相同功能的代码会出现多次以上,别大家戏称是喜欢打字。

让我们看看到下面的代码:
Listing1:
WET代码方式:

$mysql = mysql_connect ( 'localhost', 'mysqladmin_uid', 'mysqladmin_pwd' );
mysql_select_db( 'DB_NAME' ) or die( "Sorry !! No database selected!");

下面使用DRY 原则优化代码:

$db_host = ' localhost ';
$db_user = ' mysqladmin_uid ';
$db_password = ' mysqladmin_pwd ';
$db_database = ' DB_NAME ';
$mysql = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

3,适当的使用缩进及空格

在使用任何一种编程语言编写代码时,必须确保代码在需要的地方提供在必要适当的缩进和足够的空格。 以增加了代码的可读性,用更有效的方式管理代码。

4,使用有意义和一致的命名标准

正如任何编程语言,PHP的老兵还建议我们遵循有意义的命名标准。 我们有两个主要方式在实现这个要求:
A.驼峰式
在这种方法中,第一个字母是小写,每一个单词的第一个字母其后以大写。

Listing2:

public class MyClass {
public void methodName(String argName) {
}
}

B.下划线式
在这种方法中,我们把每两个词之间的下划线(“_”)。 使用这种方法时,代码可以被修改如下:
Listing3:使用下划线代码片段

public class MyClass {
public void method_name(String arg_name) {
}
}

5,避免深层嵌套

使用任何开发语言,多级嵌套降低了代码的可读性。 任何开发者都应应避免使用深层嵌套。

Listing4:代码片段具有多级嵌套

<?php
class MyClass {
public function method_name($arg_name) {
if (is_writable ( $folder )) {
if ($fp = fopen ( $file_location_path, 'w' )) {
if ($stuff = extractSomeConditionalStuff ()) {
if (fwrite ( $fp, $stuff )) {
// ...
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
} else {
return false;
}
}
}
?>

上面的代码是一个简单的嵌套代码。 我们可以看到它是非常困难的,如果块结束哪里的身影。 为了更好的可读性,让我们修改的代码:
Listing5:代码片段,避免多级嵌套

function method_name (String arg_name) {
// ...
if (! is_writable ( $folder )) {
return false;
}
if (! $fp = fopen ( $file_location_path, 'w' )) {
return false;
}
if (! $stuff = extractSomeConditionalStuff ()) {
return false;
}
if (fwrite ( $fp, $stuff )) {
// ...
} else {
return false;
}
}

6,添加应有的注释

开发中,请确保你的源代码中有足够的行内注释。 这是一个应该遵守的标准做法。 这有助于深入分析代码,因为通常情况下,负责编码的人不会一直保持不变。 即使同一个人被要求在代码中进行一些简单的修改,行内的注释总是会有助于理解当时编写代码是用来做什么的。 为了在PHP中使用较好的注释标准,建议大家去查看一些标准的PHP文档包,例如phpDocumentor。

7,不要把PHPINFO()函数在网站根目录

phpinfo()函数是一个非常重要的功能,应小心使用。 使用此功能,任何人都可以看到服务器环境的详细信息。它最好始终放在
一个安全位置的文件中使用,一旦开发完成上线后,应该删除这段代码使用。

8,永远不要相信用户

如果您的应用程序涉及任何用户输入,务必要编写安全的代码以处理这种方式,因为它包含各种可能的输入。 想要避免程序被攻击注入或者破坏数据完整性,一定要验证过滤数据的格式。大家可以看下这篇文章《可怕的代码注入方式》

9,合理使用缓存机制

良好的编程方法总是建议使用缓存机制缓存帮助我们获得更好的性能。

在PHP的世界,缓存使用来实现:
Memcached的 —— 一个在使用小数据块存储键值对存 储。
APC —— 可选PHP缓存为开放的PHP操作码缓存
XCache —— 一种快速可靠的PHP操作码缓存
Zend Cache ? API,用于实现先进的高速缓存功能的集合。
eAcclerator ? 开源的缓存工具

10,避免复制已有变量

将预定义变量复制到具有较小的名字的局部变量不是一个好的编程习惯。 这对应用程序的性能产生不利影响。 让我们来看看下面的代码片段:
Listing6:复制已有变量

$desc = strip_tags($_POST['PHP description']);
echo $desc;

上面的代码的代码是复制一个变量为局部变量不必要的例子。 这是不是一个好的做法。同样的效果可以通过使用下面的代码来实现:

echo strip_tags($_POST['PHP description']);

11,使用框架

框架是大量的研究后开发的,因此,他们被证明是问题较少。 它们使我们的开发更便捷,因为它们提供成熟的解决方案。 在PHP中有很多可用的框架。 在开发过程中,你应该利用这些。 其中的一个框架,被广泛采用的是MVC或模型视图控制器。

结论:

编程规范指导我们更有效的开发代码。

遵循编程规范,确保应用程序的更好的性能。

正如在其他编程语言,要想创造出高质量的代码,PHP也需要遵循这种良好的编程规范。

PHP 相关文章推荐
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
php array的学习笔记
May 16 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
Jul 01 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
PHP与Web页面的交互示例详解二
Aug 04 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 #PHP
php分页函数完整实例代码
Sep 22 #PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 #PHP
PHP return语句另类用法不止是在函数中
Sep 17 #PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 #PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 #PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 #PHP
You might like
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
php中smarty区域循环的方法
2015/06/11 PHP
JS backgroundImage控制
2009/05/19 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python批量转换文件编码格式
2015/05/17 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
Python可以实现栈的结构吗
2020/05/27 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
致跳远、跳高运动员广播稿
2014/01/09 职场文书
魅力教师事迹材料
2014/01/10 职场文书
幼儿园招生广告
2014/03/19 职场文书
国庆宣传标语
2014/06/30 职场文书
入党现实表现材料
2014/12/23 职场文书
红色影片观后感
2015/06/18 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
MySQL慢查询优化解决问题
2022/03/17 MySQL
Vue深入理解插槽slot的使用
2022/08/05 Vue.js