static关键字在PHP中有三种用途:1. 静态属性属于类本身,所有实例共享,通过self::或类名访问,可用于对象计数;2. 静态方法无需实例化即可调用,只能访问静态成员,适合工具函数;3. 函数内的静态变量在多次调用间保持值,用于缓存或计数,作用域仍限函数内。

在 PHP 中,static 关键字有多种用途,主要涉及类的结构和变量作用域。它并不只是“静态方法”这么简单。以下是 static 的三种常见使用方式,每种都有其特定场景和行为特点。
1. 静态属性(Static Properties)
静态属性属于类本身,而不是类的某个实例。这意味着所有该类的对象共享同一个静态属性值。
通过 self:: 或 类名:: 访问静态属性,不能用 $this->。
- 用于存储类级别的数据,比如对象计数、配置信息等。
- 即使没有创建对象实例,也可以访问静态属性。
示例:
良精商城网店购物系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,三级分销 PC+移动端+微网站,为您提供了一个完整的在线开店解决方案。良精网店购物系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。多种独创的技术使得系统能满足各行业广大用户的各种各样的需求,是一个经过完善设计并适用于各种服务器环境的高效、全新、快速和优秀的网上购物软件解决方案。
立即学习“PHP免费学习笔记(深入)”;
class Counter {
public static $count = 0;
public function __construct() {
self::$count++;
}
}
echo Counter::$count; // 输出: 0
new Counter();
new Counter();
echo Counter::$count; // 输出: 2
2. 静态方法(Static Methods)
静态方法可以直接通过类名调用,无需实例化对象。它们通常用于工具函数或工厂方法。
静态方法内部只能访问静态属性和其他静态方法,不能使用 $this。
- 适合封装不依赖对象状态的功能。
- 可被继承,但不能被覆盖(除非重新定义)。
示例:
立即学习“PHP免费学习笔记(深入)”;
class MathUtils {
public static function add($a, $b) {
return $a + $b;
}
}
echo MathUtils::add(3, 5); // 输出: 8
3. 静态变量(Static Variables) in Functions
这个用法出现在函数内部,不是类相关。static 变量在函数执行结束后不会销毁,下次调用时保留上次的值。
这种特性常用于缓存结果或记录调用次数。
- 只初始化一次,后续调用沿用已有值。
- 作用域仍局限在函数内,外部无法访问。
示例:
立即学习“PHP免费学习笔记(深入)”;
function sayHello() {
static $called = 0;
$called++;
echo "Hello called $called times.\n";
}
sayHello(); // 输出: Hello called 1 times.
sayHello(); // 输出: Hello called 2 times.
sayHello(); // 输出: Hello called 3 times.
基本上就这些。理解这三种 static 的使用方式,能帮助你在不同场景下更合理地组织代码逻辑。虽然写法相似,但语义和作用完全不同,注意区分上下文。不复杂但容易忽略细节。










