php 函数中使用static变量

本文章来简单的介绍一下关于static变量在php函数中的用法,有需要了解的同学可参考一下.

实例代码如下:

  1. function sendHeader($num, $rtarr = null)
  2. {
  3. static $sapi = null;
  4. if ($sapi === null)
  5. {
  6. $sapi = php_sapi_name();
  7. }
  8. return $sapi++;

看PW源码的时候发现setHeader()函数中使用static关键字,很奇怪,以前也没这样用过.

static用在函数里面,声明一次变量后,如果再次调用这个函数将会在初始值延续,如$sapi这里将累加.

实例代码如下:

  1. ?echo sendHeader(1)."<br>";
  2. echo sendHeader(2)."<br>";
  3. echo sendHeader(3)."<br>";
  4. output:
  5. ?apache2handler
  6. apache2handles
  7. apache2handlet

和global有点类似,但不同的是作用域.static只能作用于此函数.

有点意思.需要深入研究.

实例代码如下:

  1. class test
  2. {
  3. public static function a(){}
  4. public function b(){}
  5. }
  6. $obj = new test;

调用代码

实例代码如下:

  1. test::a();
  2. $obj->a();
  3. $obj->b();

变量范围的另一个重要特性是静态变量(static variable).静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失

例子 使用静态变量的例子

实例代码如下:

  1. <?php
  2. function test()
  3. {
  4. static $w3sky = 0;
  5. echo $w3sky;
  6. $w3sky++;
  7. }
  8. ?>

现在,每次调用 test() 函数都会输出 $w3sky 的值并加一.