PHP static静态局部变量和静态全局变量

2017-11-16  本文已影响0人  舒小贱

使用静态局部变量的原因是它不能被外部使用,但是它的值依然在没此使用后保留。虽然使用全局变量可以实现相同的功能,但是它经常会造成意外。
静态局部变量的特点:

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

函数test()执行后,变量$nm的值都保存了下来了。
在class中经常使用到静态属性,比如静态成员、静态方法。
Program List:类的静态成员
静态变量$nm属于类nowamagic,而不属于类的某个实例。这个变量对所有实例都有效。
::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身

    
<?php
    class nowamagic 
    {
        public static $nm = 1;
        
        function nmMethod() 
        {
            self::$nm += 2;
            echo self::$nm . '<br />';
        }
    }
    
    $nmInstance1 = new nowamagic();
    $nmInstance1 -> nmMethod();
    
    $nmInstance2 = new nowamagic();
    $nmInstance2 -> nmMethod();
?> 
程序运行结果:
3
5

Program List:静态属性

    
<?php
    class NowaMagic
    {
        public static $nm = 'www.nowamagic.net';

        public function nmMethod() 
        {
            return self::$nm;
        }
    }
    
    class Article extends NowaMagic
    {
        public function articleMethod() 
        {
            return parent::$nm;
        }
    }
    
    // 通过作用于限定操作符访问静态变量
    print NowaMagic::$nm . "<br />";
    
    // 调用类的方法
    $nowamagic = new NowaMagic();
    print $nowamagic->nmMethod() . "<br />";
    
    print Article::$nm . "<br />";
    
    $nmArticle = new Article();
    print $nmArticle->nmMethod() . "<br />";
?>
程序运行结果:
www.nowamagic.net
www.nowamagic.net
www.nowamagic.net
www.nowamagic.net

PHP的静态变量介绍

上一篇 下一篇

猜你喜欢

热点阅读