WEB开发网
开发学院CMS教程phpcms PHPCMS开发文档里看到PHP编码规范 阅读

PHPCMS开发文档里看到PHP编码规范

 2009-10-17 05:33:00 来源:WEB开发网   
核心提示:就一般约定而言,类、函数和变量的名字应该总是能够描述让代码阅读者能够容易的知道这些代码的作用,PHPCMS开发文档里看到PHP编码规范(3),形式越简单、越有规则,就越容易让人感知和理解,因此,在除了./include/common.inc.php以外的任何一个被包含和调用的程序文件中,应该避免使用模棱两可,晦涩不标准

就一般约定而言,类、函数和变量的名字应该总是能够描述让代码阅读者能够容易的知道这些代码的作用。形式越简单、越有规则,就越容易让人感知和理解。应该避免使用模棱两可,晦涩不标准的命名。

4.4.1. 变量、对象、函数名

变量、对象、函数名一律为小写格式,除非必要,单词之间一般不使用下划线“_”进行分割;

以标准计算机英文为蓝本,杜绝一切拼音、或拼音英文混杂的命名方式;

变量命名只能使用项目中有据可查的英文缩写方式,例如可以使用$data而不可使用$data1、$data2这样容易产生混淆的形式,应当使用$articledata、$userdata这样一目了然容易理解的形式;

可以合理的对过长的命名进行缩写,例如$bio($biography),$tpp($threadsPerPage),前提是英文中有这样既有的缩写形式,或字母符合英文缩写规范;

必须清楚所使用英文单词的词性,在权限相关的范围内,大多使用$enable***、$is*** 、的形式,前者后面接动词,后者后面接形容词。

4.4.2. 常量

常量应该总是全部使用大写字母命名,少数特别必要的情况下,可使用划线来分隔单词;

PHP 的内建值 TRUE、FALSE 和NULL必须全部采用大写字母书写。

4.5.变量的初始化与逻辑检查

任何变量在进行累加、直接显示或存储前必需进行初使化,例如:

$number = 0; //数值型初始化

$string = ‘’; //字符串初始化

$array = array(); //数组初始化

判断一个无法确定(不知道是否已被赋值)的变量时,可用empty()或isset(),而不要直接使用if($switch)的形式,除非你确切的知道此变量一定已经被初始化并赋值。

empty()和isset()的区别为:

l bool empty(mixed var)

n 如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

l bool isset(mixed var[, mixed var[, ...]])

n 如果 var 存在则返回 TRUE,否则返回 FALSE。

n 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

判断一个变量是否为数组,请使用is_array(),这种判断尤其适用于对数组进行遍历的操作,例如foreach(),因为如果不事先判断,foreach()会对非数组类型的变量报错;

判断一个数组元素是否存在,可使用isset($array[‘key’]),也可使用empty(),两者异同见上。

4.6.安全性

PHP中的变量不并不像C语言那样需要事先声明,解释器会在第一次使用时自动创建他们,同样类型也不需要指定,解释器会根据上下文环境自动确定。从开发人员的角度来看,这无疑是一种极其方便的处理方法。一个变量被创建了,就可以在程序中的任何地方使用。这导致的结果就是开发人员工经常不注意初始化变量。因此,为了提高程序的安全性,我们不能相信任何没有明确定义的变量。所有的变量在定义使用前要初使化以防止恶意构造提交的变量覆盖程序中使用的变量。

细节可以阅读(http://www.securereality.com.au/studyinscarlet.txt)这篇文档,该文档里罗列了PHP常见的安全问题,阅读该文档是非常有必要的!

4.7.兼容性

代码设计应当兼顾PHP 高低版本的特性,当前,应仍然以PHP 4.3.0作为最低通过平台,尽量不使用高版本PHP 新增的函数、常数或者常量。如果使用只在高版本才具备的函数,必须对其进行二次封装,自动判断当前PHP版本,并自行编写低版本下的兼容代码;

对于个别函数,参数要求或者代码要求应当以较为严格的PHP版本为准;

除非必要,不要使用PHP扩展模块中的函数。使用时应当加入必要的判断,当服务器环境不支持此函数的时候,进行必要的处理。文档和程序中的功能说明中,也应加上兼容性说明。

4.8.代码重用

代码的有效重用可以减少效率的损失与资源的浪费。在开发软件项目时为了避免重复劳动和浪费时间。开发人员应尽量提高现有代码的重用率,同时将更多的精力用在新技术的应用和新功能的创新开发上面。

l 在需要多次使用代码,并且对于您希望实现的任务没有可用的内置 PHP 函数时,不吝啬定义函数或类。开发者须根据功能、调用情况,将函数放置于include目录并以.func.php作为函数文件后缀,将类放置于include/class目录。超过3行,实现相同功能的程序切勿在不同程序中多次出现,这是无法容忍和回避的问题;

l 在任何时候都不要出现同一个程序中出现两段或更多的相似代码或相同代码,即便在不同程序中,也应尽力避免。开发者应当总是有能力找到避免代码大段(超过10行)重复或类似的情况。

需要强调的是,本部分虽然篇幅较短,但却是十分需要经验,并将花费开发者大量时间和精力去进行优化的部分,任何产品开发者必须时刻清楚和理解代码重用的重要性和必要性,切实在增强产品效率、逻辑性和可读性上下功夫,这是一名优秀软件开发者所必须具备的基本素质。

4.9.其他细节问题

4.9.1. 包含调用

包含调用程序文件,请全部使用require_once,以避免可能的重复包含问题;

包含调用缓存文件,由于缓存文件无法保证100%正确打开,请使用include_once或include。在必要时,可以使用@include_once或@include的方式,以忽略错误提示;

包含和调用代码中,须以PHPCMS_ROOT.’/’开头,应避免直接写程序文件名(例如:require_once ‘x.php’;)的做法;

所有被包含和调用的程序文件,包括但不限于程序、缓存或模板,通常其不能被直接URL请求。phpcms通过在./include/common.inc.php中定义一个标记性常量IN_PHPCMS,来判断程序是否被合法调用。因此,在除了./include/common.inc.php以外的任何一个被包含和调用的程序文件中,需要包含以下内容,以使得访问者无法直接通过URL请求该文件:

上一页  1 2 3 4 5 6  下一页

Tags:PHPCMS 开发 文档

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接