PHP变量作用域与生命周期详解
PHP变量作用域与生命周期详解理解变量的作用域和生命周期是写好代码的基础。PHP的变量作用域规则跟C语言有些像但又有自己的特点。PHP有局部变量、全局变量、静态变量、超全局变量几种。每种的作用域和生命周期都不一样。php$globalVar 全局变量;function testScope(): void{$localVar 局部变量;echo $localVar . \n;global $globalVar;echo $globalVar . \n;echo $GLOBALS[globalVar] . \n;static $count 0;$count;echo 调用次数: $count\n;}testScope();testScope();?静态变量在函数退出后不会销毁下次调用时值还在。phpfunction counter(): int{static $count 0;$count;return $count;}echo counter() . \n;echo counter() . \n;echo counter() . \n;?引用赋值用符号。php$a 10;$b $a;$b 20;echo a: $a, b: $b\n;function addItem(array $arr, mixed $item): void{$arr[] $item;}$list [1, 2, 3];addItem($list, 4);print_r($list);?foreach引用需要在循环后unset。php$arr [1, 2, 3, 4, 5];foreach ($arr as $value) {$value * 2;}unset($value);print_r($arr);?超全局变量在脚本的任何地方都能访问不用global声明。phpecho 请求方法: {$_SERVER[REQUEST_METHOD]}\n;echo 请求URI: {$_SERVER[REQUEST_URI]}\n;echo 用户IP: {$_SERVER[REMOTE_ADDR]}\n;?变量的生命周期在对象上也适用。phpclass Resource{public function __construct(private string $name){echo 创建: {$this-name}\n;}public function __destruct(){echo 销毁: {$this-name}\n;}}function test(): void{$obj new Resource(临时对象);}test();echo 函数已返回\n;?理解变量的作用域和生命周期能写出更可预测的代码。在大型项目中变量冲突和意外修改是常见的bug来源。用好作用域规则加上一些编码规范这些问题都能避免。