PHP中static静态变量和普通变量的区别
在PHP中,静态变量和普通变量是两种不同类型的变量。它们在作用域、生命周期和访问方式上有所不同。
作用域
- 普通变量:普通变量的作用域限定在其所在的函数或方法内部。它们只能在声明它们的函数或方法中访问。
- 静态变量:静态变量的作用域限定在声明它们的类或函数内部。它们可以在声明它们的类或函数内部以及类的所有实例中访问。
生命周期
- 普通变量:普通变量的生命周期与其所在的函数或方法的执行周期相同。每次调用函数或方法时,都会重新创建和初始化普通变量。
- 静态变量:静态变量的生命周期与其所在的类或函数的执行周期相同。静态变量只会在首次声明时创建和初始化,然后在整个程序执行期间保持存在。
访问方式
- 普通变量:普通变量通过函数或方法的参数、局部变量或类的属性来访问。
- 静态变量:静态变量通过类的属性或静态方法来访问。
示例说明
示例1:普通变量
function increment() {
$count = 0; // 普通变量
$count++;
echo $count;
}
increment(); // 输出:1
increment(); // 输出:1
在上面的示例中,每次调用increment()
函数时,都会重新创建和初始化$count
变量。因此,每次输出的结果都是1。
示例2:静态变量
function increment() {
static $count = 0; // 静态变量
$count++;
echo $count;
}
increment(); // 输出:1
increment(); // 输出:2
在上面的示例中,$count
变量被声明为静态变量。它只会在首次调用increment()
函数时创建和初始化为0。然后,每次调用函数时,$count
变量的值会保持存在,并且每次都会自增。因此,输出的结果分别为1和2。
这是因为静态变量的生命周期与函数的执行周期相同,而不是每次调用函数都会重新创建和初始化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php中static 静态变量和普通变量的区别 - Python技术站