PHP 注意事项
Tips
尽量静态化
如果函数可以静态化,就尽量静态化。
区别主要体现是内存的处理上,静态方法在程序开始的时候分配内存,而实例方法在实例化的时候才会分配内存。
静态方法可以直接调用,而实例方法要先生成实例,在通过实例调用。静态方法过多,会占用内存
echo VS print
echo的性能高于print,因为echo没有返回值,而print返回一个整型
echo 大字符串的时候需要在服务器进行对应的配置
echo 多个字符串
echo 多个字符串是采用
,
代替.
来连接字符串@ 错误屏蔽
用 @ 掩盖错误会降低脚本运行速度,特别是不要在循环中使用@。
$row[‘id’] & $row[id] & $row[1]
'id'
会直接查找key为'id'
d的值,而没有引号如变量、常量在解析的时候会先判断类型在取值。isset() & empty()
isset()是测试变量是否被赋值。
empty()是测试变量是否为空,该变量已经赋值。如果变量没被赋值就引用是被允许的,但会有notice提示。如果变量被赋予空值
$t = ""; $t = 0; $t = false;
,empty($t)
返回真,isset($t)
也返回真。
如果要注销一个变量采用unset($t)
$t = NULL
循环前确认最大次数
在执行for循环前确认最大字数,不要每次循环的时候都重新计算最大值。
1
2
3
4
5
6
7
8//不要这样做
for ($i=0;$i<=count($array);$i++){
}
//应该这样做
$len = count($array);
for ($i=0;$i<=$len;$i++){
}include() & include_once() & require() & require_once()
功能是一致的都是加载文件,
_once
是在加载文件前判断该文件是否已经被加载过了,避免重复加载。
主要区别- 错误处理机制
require()
如果不存在文件时,会抛出fatal error
脚本终止运行。include()
如果不存在文件时,会抛出warning
但脚本继续运行。
- 性能
require()
文件只处理一次 (实际上,文件内容替换了require()语句)。include()
执行时文件每次都要进行读取和评估。
如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()
效率比较高。
使用弹性
require()
通常放在脚本的最前面,脚本在执行前,会先载入所指定引入的文件,使它变成脚本的一部份。include()
通常放在流程控制的处理区段中。脚本在读到文件时,才将它载进来。这种方式,可以把执行时的流程简单化。
包含文件时使用完整路径,减少解析路径所需的时间。
- 错误处理机制
‘ ‘ & “ “
PHP 允许使用单引号和双引号来封装字符串变量。
" "
先读取字符串内容,再查找其中的变量,并进行赋值。不要随便复制变量
把变量复制到另一个变量会增加一倍的内存消耗。
if else & switch case
switch case好于使用多个if,else if语句,并且代码更加容易阅读和维护。
并不是事必面向对象
面向对象往往开销很大,每个方法和对象的调用都会消耗内存。
不要把方法细分得过多
每个方法的调用都会消耗内存。
尽量采用的PHP内置函数
循环内部不要声明变量,尤其是大变量:对象
销毁变量释放内存,特别是大的数组
字符串函数代替正则表达式。
split比exploade快