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

PHP的static变量初始化问题

 
阅读更多

知识点:

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

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

下面看几个例子。

1.类中的static成员变量

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

2.函数中的成员变量

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

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

分享到:
评论

相关推荐

    php 静态变量的初始化

    然而,如果你想要将静态变量初始化为一个对象,PHP并不支持像Java那样的静态构造器或静态初始化块。在这种情况下,你需要在代码的某个时刻显式地调用一个方法来完成初始化。例如: ```php class A { static ...

    PHP面向对象之旅深入理解static变量与方法

    静态变量和方法只能访问其他静态成员,因为它们在没有实例化的情况下就可以被调用,而此时非静态成员可能尚未被初始化。所以,静态成员不能访问非静态成员。 5. **使用场景** - 计数器:如示例中的`user`类,记录...

    PHP中的静态变量及static静态变量使用详解

    PHP语言本身没有提供静态构造器的概念,但是可以借助函数来初始化静态变量。例如: ```php class MyStaticClass { public static $MyStaticVar = null; public static function MyStaticInit() { self::$...

    PHP面向对象之旅深入理解static变量与方法共11页

    本资料“PHP面向对象之旅深入理解static变量与方法”旨在帮助开发者深入理解PHP中的静态(static)变量和静态方法,这些都是OOP的重要组成部分。下面我们将详细探讨这两个概念。 1. 静态变量 静态变量是在类中定义...

    6种方法初始化JAVA中的list集合

    本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解每种方法的使用和特点。 1. 常规方式 这是最常见的初始化List的方式,通过创建ArrayList实例并逐个添加元素。自JDK 7以后,可以省略泛型类型的...

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

    PHP中静态变量分为局部静态变量和全局静态变量,它们都有存储状态的特性,但使用场景和初始化规则有所不同。在编程中,合理地利用静态变量,可以有效管理函数内部数据的持久化状态和程序的全局状态。 局部静态变量...

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

    需要注意的是,static变量不能通过表达式来初始化。例如,不能用static $int = 1+2这样的表达式来声明静态变量,因为静态变量的值需要在编译时就能确定。如果想要初始化静态变量,需要使用明确的值,如static $int =...

    浅析php变量修饰符static的使用

    另一个需要注意的点是,在PHP5.3及以上版本中,可以在声明静态变量时使用变量来初始化静态变量,但这需要在变量声明之前该变量已经被定义过。例如: ```php $a = 5; function test() { static $b = 0; static $c ...

    PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    每次调用函数时,static 变量不会被重新初始化,而是保留上次调用时的值。例如: ```php function countVisits() { static $visits = 0; $visits++; echo "这是第 $visits 次访问。 "; } countVisits(); ...

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

    需要注意的是,静态变量在声明时不能直接使用表达式进行初始化,例如 `static $int = 1+2;` 或 `static $int = sqrt(121);` 这样的代码会导致解析错误。正确的做法是先声明一个静态变量,然后在函数体中对其进行赋值...

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

    - **生命周期**:静态变量在程序执行期间只初始化一次,而普通变量每次函数调用都会重新初始化。 - **存储位置**:静态变量存储在内存的栈区,而普通变量存储在内存的栈区(函数内部变量)或堆区(对象属性)。 - **...

    PHP语言基础语法介绍,包括变量、常量等

    - **初始化**:虽然PHP允许不显式初始化变量,但良好的编程习惯推荐明确初始化变量。 示例代码: ```php <?php $name = "coleak"; $mes = "Hello"; echo $mes . " " . $name; echo " "; echo "My name is $name...

    PHP静态成员变量

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

    php中const与static的区别与使用共3页.pdf.zip

    每次调用时,不会重新初始化该变量。 2. **作用域限制**:静态变量属于其所在的类,而不是实例对象,可以通过类名或对象来访问。 3. **生命周期**:静态变量的生命周期直到脚本结束,而非局部变量只存在于函数调用...

    php中const与static的区别与使用共3页.pdf

    普通成员变量在每次对象实例化时都会创建新的副本,而静态变量只会在第一次调用时初始化,并在整个类的生命周期内共享,不随对象的创建销毁而变化。例如: ```php class Counter { public static $count = 0; ...

    PHP教程 变量定义

    此外,虽然在PHP中可以不初始化变量就直接使用,但这样做可能会导致不可预见的结果。未初始化的变量会自动获得其类型的默认值:`FALSE`、`0`(零)、空字符串 `''` 或空数组 `[]`。 在定义变量时,遵循以下命名规则...

Global site tag (gtag.js) - Google Analytics