Heim  >  Artikel  >  Backend-Entwicklung  >  PHP的static静态变量

PHP的static静态变量

巴扎黑
巴扎黑Original
2016-11-09 14:18:261215Durchsuche

静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。

只要在变量前加上关键字static,该变量就成为静态变量了。

    <?php    
        function test()    
       {    
            static $nm = 1;    
            $nm = $nm * 2;    
            print $nm."<br />";    
        }    
    
        // 第一次执行,$nm = 2    
        test();    
        // 第一次执行,$nm = 4    
        test();    
        // 第一次执行,$nm = 8    
        test();    
    ?>

程序运行结果:

    2    

    4    

    8    

函数test()执行后,变量$nm的值都保存了下来了。

在class中经常使用到静态属性,比如静态成员、静态方法。

Program List:类的静态成员

静态变量$nm属于类nowamagic,而不属于类的某个实例。这个变量对所有实例都有效。

::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身。

view source 

 

print?

 <?php    
        class nowamagic    
        {    
            public static $nm = 1;    
    
            function nmMethod()    
            {    
                self::$nm += 2;    
                echo self::$nm . &#39;<br />&#39;;    
            }    
        }    
   
        $nmInstance1 = new nowamagic();    
        $nmInstance1 -> nmMethod();    
    
        $nmInstance2 = new nowamagic();    
        $nmInstance2 -> nmMethod();    
    ?>

程序运行结果:

  3    

  5    


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn