PHP的命名
- 命名的注意事项:
- 命名要有实际的含义
- 命名风格保持一致
- 不用拼音命名
- 不用语言关键字
适当使用注释
终极要求:代码就是注释
- 好的代码应该是自描述
- 难以理解的地方加上注释
- 函数的功能加上注释说明
- 类的功能和使用方法加注释
多备份重要的代码
- 代码不能只有一份
- 启用编辑器的自动备份
- 用代码管理工具备份
坚持字符编码统一
PHP文件编码 == 模板编码 == 数据库编码
使用之前,变量要初始化
使用一个未定义的变量,比使用一个定义好的变量要慢8倍以上!
可以想象,PHP引擎会首先按照正常的逻辑来获取这个变量,然而这个变量不存在,所以PHP引擎需要抛出一个NOTICE,并且进入一段使用为定义变量是应该走的逻辑,然后返回一个新的变量。
另外,阅读代码的角度讲,当你使用一个未定义的变量时,会让阅读的人困惑:“这个变量在哪里初始化的,和之前的代码有关系么?和include进来的文件有关系么?”
使用NULL === 来代替is_null
is_null和 NULL ===完全是一样的效果,但是却节省了一次函数调用
尽量使用 === 尽量不适用 ==
PHP有两组相等比较运算符 === / !== 和 == / !=, == / !=会有隐式类型转换,而 === / !== 会严格比较两个操作时是否类型相同并且值相等
避免在for循环中计算
1 | for($i = 0; $i<strlen($str); $i++){ |
会导致每次循环都调用strlen,改为
1 | $j = strlen($str); |
strtr替代str_replace
1 | $subject = 'hello, world'; |
strtr函数的效率是str_replace的四倍
优先使用单引号
$row[‘id’] 的效率是$row[id]的7倍
header头的编码
1 | header("Content-type:text/html;charset=utf-8"); |
PHP结束标记不要写
纯PHP代码,最好在文件末尾删除PHP结束标记
测试环境开启所有错误
error_reporting(7)
- E_ERROR
- E_WARNING
- E_PARSE
但切记,上线之后要关闭我的报错,将我们的错误代码写入到错误日志中,方便差错
屏蔽错误非常低效
养成不用@的好习惯
1 | $handle = @file('a.txt'); |
用FALSE表示错误,用NULL表示不存在
对于操作类的函数,失败返回FALSE,表示“操作失败了”,而对于查询类的函数,如果找不到想要的值,则应该返回NULL,表示“找不到”
优先使用PHP内置函数
正则耗时,尽量避免,而采用直接的字符串处理函数代替,如:
1 | filter_var('woody_deng@163.com', FILTER_VALIDATE_EMAIL); |
有用的PHP内置函数
1 | parse_url - 解释 URL,返回其组成部分 |
我们PHP手册中常见的字符串函数和数组函数,也需要熟悉,优先使用
防御式变成思想
不要相信外部的一切输入!所有的输入都要检查
1 |
|
使用PDO操作MySQL
1 | # 写法一 |