复制代码 代码如下: function sendHeader($num, $rtarr = null) { static $sapi = null; if ($sapi === null) { $sapi = php_sapi_name(); } return $sapi++; 看PW源码的时候发现setHeader()函数中使用static关键字,很奇怪,以前也没这样用过。 static用在函数里面,声明一次变量后,如果再次调用这个函数将会在初始值延续,如$sapi这里将累加。 复制代码 代码如下: echo sendHeader(1).”<br>”; echo sendHeader( 在PHP编程语言中,`static`关键字用于定义变量在函数内部的持久化状态。当我们谈论`static`变量时,我们通常是指在函数被调用时,这些变量不会像普通局部变量那样每次调用时重新初始化,而是保留上一次调用时的值。这在处理需要在函数间保持状态或避免重复计算的场景中非常有用。 在给出的示例代码中,我们看到一个名为`sendHeader`的函数,它使用了`static`关键字来定义变量`$sapi`: ```php function sendHeader($num, $rtarr = null) { static $sapi = null; if ($sapi === null) { $sapi = php_sapi_name(); } return $sapi++; } ``` 在这个函数中,`$sapi`首次被调用时被初始化为`null`。当`$sapi`的值不是`null`时(即在后续的函数调用中),它不再执行初始化,而是继续使用上一次调用后的值。`php_sapi_name()`函数返回当前PHP运行环境的信息,例如"apache2handler"。因此,第一次调用`sendHeader`会获取SAPI名称,之后每次调用仅会增加`$sapi`的值。 当我们运行以下代码: ```php echo sendHeader(1)."<br>"; echo sendHeader(2)."<br>"; echo sendHeader(3)."<br>"; ``` 输出将是: ```php apache2handler apache2handler1 apache2handler2 ``` 这表明`$sapi`的值在每次调用中都增加了1,而不是每次都重置为`null`。 `static`关键字与`global`关键字的主要区别在于作用域。`global`变量在整个脚本范围内都是可访问的,而`static`变量只在其定义的函数内部可见。这意味着`static`变量不能被其他函数直接访问,提供了更安全的封装。 除了`static`变量,PHP还有`final`、`const`和`define`等关键字,它们在不同的上下文中用于创建不可变的常量。`final`用于声明不可被覆盖的类或方法,`const`用于在类中定义常量,而`define`则是在全局范围定义常量。 `static`关键字是PHP中一个重要的特性,它允许开发者在函数内部创建持久化的变量状态,这对于实现计数器、缓存或状态管理等功能非常有帮助。了解并熟练使用`static`可以帮助编写更加高效和简洁的代码。
- 粉丝: 9
- 资源: 950
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助