美文网首页
PHP static静态局部变量和静态全局变量

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

作者: 舒小贱 | 来源:发表于2017-11-16 00:58 被阅读0次

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

  • 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值

  • 2.静态局部变量只会初始化一次

  • 3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量
    定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。

  • 4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

    
<?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的静态变量介绍

相关文章

  • C++面试考点总结

    static作用是什么?在C和C++中有何区别? static可以修饰局部变量(静态局部变量)、全局变量(静态全局...

  • php函数

    局部变量---动态变量 局部变量---静态变量 全局变量---global 全局变量---GLOBALS PHP传...

  • C++的static修饰符

    一、static的概念 在局部变量之前加上static,局部变量就会变成局部静态变量。在全局变量之前加上stati...

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

    使用静态局部变量的原因是它不能被外部使用,但是它的值依然在没此使用后保留。虽然使用全局变量可以实现相同的功能,但是...

  • 打卡7.21

    static定义静态变量和auto定义变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函...

  • 9/25

    今天老师讲了结构体的一些知识,解释了全局变量、局部变量和静态局部变量的区别。static定义静态变量,在定义中运行...

  • c 静态全局变量

    static 与 全局变量当一个进程的全局变量被声明为static之后,它的中文名叫静态全局变量。静态全局变量和其...

  • Block捕获变量

    block捕获的变量 局部变量 静态局部变量 全局变量 静态全局变量 函数执行部分 总结 局部变量基本数据类型:捕...

  • C语言内存分配(重)

    内存分配的类型: 静态内存分配: 全局变量、静态全局变量、静态局部变量; 静态内存分配是在程序编译时分配的内存空间...

  • C/C++ 中 static 的用法

    C语言: 1、静态全局变量:1、在全局变量前加上 static 关键字,即为静态全局变量2、静态全局变量在程序的数...

网友评论

      本文标题:PHP static静态局部变量和静态全局变量

      本文链接:https://www.haomeiwen.com/subject/paykvxtx.html