`
javasogo
  • 浏览: 1774180 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PHP的static变量初始化问题

 
阅读更多

知识点:

一、static变量只能使用使用基本类型的字面值赋值,通过表达式、对象或函数返回值赋值的操作都是不允许的

二、静态变量声明是在编译时解析的

下面看几个例子。

1.类中的static成员变量

上面两段代码均含有static成员变量,但是第二个类如果打开注释部分,就会出现编译错误,因为 new Test(); 不是基本类型字面值。

2.函数中的成员变量

mytest1 注释掉的代码就是编译出错的部分,错误原因与上面例子描述相同,这里我们着重看下 mytest2 和 mytest3,运行下面代码:

从运行结果中可以看出,static 变量虽然只被赋值一次,但这只局限于 static $var = xxx; 这一行代码,对于后期的赋值操作跟普通变量赋值完全一样,如 mytest3 中 $test = new Test();。

分享到:
评论

相关推荐

    php 静态变量的初始化

    } 如果要将变量赋值为对象,那么只能在构造器中进行初始化,例如: class A { private $child; public function __construct() { $this->child = new B(); } } 但是php中并没有一个类似java中的静态构造器/静态块的...

    php中static 静态变量和普通变量的区别

    static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内...

    php中的静态变量的基本用法

    静态变量只存在于函数作用域内,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。... //这里定义并初始化一个静态变量 $nums public static $nums=0; func

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

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

    php中static静态变量的使用方法详解

    php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。

    PHP静态成员变量

    静态成员:静态类中的成员...B、初始化:如果不显式初始化,那么将被隐式初始化为0(自动变量是随机的,除非显式地初始化)。 C、访变量只在本源文件可见,严格的讲应该为定义之处开始到本文件结束。 2.静态局部变量 特

    浅谈PHP变量作用域以及地址引用问题

    作用域的概念: 在PHP脚本的任何位置都可以声明变量,但是,声明变量的位置会大大影响访问变量的范围。这个可以访问的范围称为作用...注:初始化后不能再次进行初始化,不能用表达式来赋值。 复制代码 代码如下:functi

    php 函数中静态变量使用的问题实例分析

    上述代码,分别输出0,1,2 静态变量$a在第一次定义并初始化后就会常驻内存,直到脚本执行完毕。 当第二次调用msg()函数时,这时的$a值为1,而不会变成0。 那么问题来了,请看下面的一段代码: $data = array( array...

    PHP中Static(静态)关键字功能与用法实例分析

    函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何...

    Static-Cache-Manager-for-PHP:php的全局静态缓存管理器

    适用于PHP的静态缓存管理器关于在某些应用程序中,初始化一组数据并将其存储在静态变量中以在整个应用程序范围内可用,而不必在每次需要时都对其进行初始化非常有用。 拥有大量此类静态缓存变量可能会导致不良的代码...

    开启PHP Static 关键字之旅模式

    声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。 为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。 由于静态方法不需要通过对象...

    Linux C程序设计大全

    3.5.3 static变量的作用——实现封装和模块化设计 3.6 编写多文件的程序——链接的作用 3.6.1 链接多个文件 3.6.2 链接时符号解析规则 3.6.3 链接规则的应用 3.7 可变参数 3.7.1 可变参数的概念 3.7.2 实现一个简单...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请参考PHP手册。这在...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP基础、Web页面交互、文件操作、会话应用、图形图像处理及面向...

    DX1.5 手机正式版

    3:最重要的是初始化一个全局数组(这里说并不是超级全局变量)$_G数组与 $this->var属性,其中$_G数组是供外部代码掉用的,而$this->var是类内部掉用的(这个只是猜测) 这个函数得到了一些重要信息 DISCUZ_ROOT ...

    Java-Web程序设计题库(2).doc

    )结尾就行 B、一个声明仅在一个页面中有效 C、声明得变量将作为局部变量 D、在预定义中声明得变量将在JSP页面初始化时初始化 27、在JSP中使用〈jsp:getProperty>标记时,不会出现得属性就是( C )。...

    Java-Web程序设计题库.doc

    )结尾就行 B、一个声明仅在一个页面中有效 C、声明的变量将作为局部变量 D、在预定义中声明的变量将在JSP页面初始化时初始化 27、在JSP中使用标记时,不会出现的属性就是( C )。 A、name B、property C

    Java-Web程序设计题库(1).doc

    在预定义中声明的变量将在JSP页面初始化时初始化 27、在JSP中使用标记时,不会出现的属性是( C )。 A.name B.property C.value D.以上皆不会出现 28、page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述...

Global site tag (gtag.js) - Google Analytics