静态变量用static声明,函数中可保持值不重置,类中用于定义属类成员;如计数器、缓存、单例模式等,但需注意内存占用及无法跨请求持久化。

在PHP中,静态变量通过 static 关键字声明。它主要用于保留函数执行结束后局部变量的值,或在类中创建属于类本身的变量和方法,而不是实例对象。
函数中的静态变量
当一个变量被声明为 static,它的生命周期会延续到脚本结束,即使函数执行完毕,变量也不会被销毁,下次调用函数时仍保留上次的值。
例如:
function counter() {
static $count = 0;
echo $count . "\n";
$count++;
}
counter(); // 输出: 0
counter(); // 输出: 1
counter(); // 输出: 2
说明:$count 是静态变量,只初始化一次。每次调用函数时,它保持上一次的值,不会重置为0。
立即学习“PHP免费学习笔记(深入)”;
类中的静态属性和方法
在类中,使用 static 可以定义静态属性和静态方法。这些成员不属于某个对象实例,而是属于类本身,可以通过类名直接访问。
示例:
class MathTool {
public static $pi = 3.14159;
public static function add($a, $b) {
return $a + $b;
}
}
echo MathTool::$pi; // 输出: 3.14159
echo MathTool::add(5, 3); // 输出: 8
注意:静态方法内部不能使用 $this,因为它不依赖于对象实例。若需访问当前类的静态属性,可用 self:: 或 static::。
静态变量的常见用途
- 计数器功能:记录函数被调用的次数。
- 缓存结果:避免重复计算,提升性能。
- 单例模式:确保一个类只有一个实例,常用于数据库连接等场景。
- 工具类方法:无需实例化即可调用,如数学运算、字符串处理等。
注意事项
静态变量虽然方便,但也要注意:
- 静态变量在脚本整个生命周期中占用内存,过多使用可能影响性能。
- 在多请求环境中(如Web服务器),静态变量不会跨请求保持,每个请求是独立的。
- 静态方法无法访问非静态属性或方法,因为没有对象上下文。











