静态变量(static)

一、静态变量

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都阳光房等,在重庆网站建设公司成都全网营销、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

/**

声明一个名为test的函数,测试在函数内部声明的静态变量的使用

*/

function test(){

static $a=0;

echo $a;

$a++;

}

test();           //第一次运行,输出0

test();           //第二次运行,输出1

test();           //第三次运行,输出2

test();           //第四次运行,输出3

?>

  在上例中,将函数中的局部变量$a,使用static关键词声明为静态变量,并赋初值为0.函数在第一次执行时,静态变量$a经运算后,从初值0变为1.当函数第一次执行完毕后,静态变量$a并没有被释放,而是将结果保存在静态内存中。第二次执行时,$a从内存中获取上一次计算的结果1,继续计算,并将结果2存于静态内存空间中。以后每次函数执行时,静态变量将从自己的静态内存空间中获取前次的储存结果,并以此为初值进行计算。

二、static关键字的使用

   类中的静态成员是不需要对象而是使用类名来直接访问的,格式如下所示:

类名::静态成员属性名;      //在类的外部和成员方法中都可以使用这种方式访问静态成员属                              性

类名::静态成员方法();      //在类的外部和成员方法中都可以使用这种方式访问静态成员方                              法


   在类中声明的成员方法中,也可以使用关键字“self”来访问其他静态成员。因为静态成员是属于类的,而不属于任何对象,所以不能用$this来引用它,而在PHP中给我们提供的self关键字,就是在类的成员方法中用来代表本类的关键字。格式如下所示:

self::静态成员属性名;       //在类的成员方法中使用这种方式访问本类中的静态成员属性

self::静态成员方法名();      //在类的成员方法中使用这种方式访问本类中的静态成员方法

class MyClass{

static $count;         //在类中声明一个静态成员属性count,用于统计对象被创建的次数

function __construct(){     //每次创建一个对象就会自动调用一次这个构造方法

self::$count++;         //使用self访问静态成员count,使其自增1

}

static function getCount(){    //声明一个静态方法,在类外面直接使用类名就可以调用

return self::$count;       //在方法中使用self访问静态成员并返回

}

}

MyClass::$count=0;               //在类外面使用类名访问类中的静态成员,为其初始化赋值0

$myc1=new MyClass();             //通过myclass类创建第一个对象,在构造方法中将count累加1

$myc2=new MyClass();             //通过myclass类创建第二个对象,在构造方法中又将count累加1

$myc3=new MyClass();            //通过myclass类创建第三个对象,在构造方法中再次将count累加1

echo MyClass::getCount();       //在类外面使用类名访问类中的静态成员方法,获取静态属性的值3

echo "
";

echo $myc3->getCount();        //通过对象也可以访问类中的静态成员方法,获取静态属性的值3

?>

代码运行结果为3 3


本文标题:静态变量(static)
标题URL:http://hbruida.cn/article/joghgj.html