首页
学习
活动
专区
工具
TVP
发布

php面向对象static静态属性和静态方法的调用

这篇文章主要介绍了php面向对象static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了phpstatic静态属性和静态方法的调用...具体如下: 这里分析了php面向对象static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存存放位置,这样就非常容易理解了。...静态属性、方法(包括静态与非静态)在内存,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性)。 结论: (1)、静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名"; (2)、静态方法不需要实例化即可调用。同上 (3)、静态方法不能调用静态属性。...因为非静态属性需要实例化后,存放在对象里; (4)、静态方法可以调用静态方法,使用 self 关键词。php里,一个方法被self:: 后,它就自动转变为静态方法;

1.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

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

php变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 本函数每次调用时都会将 w3sky 的值设为 0 并输出 "0"。将变量加一的 w3sky 就不存在了。...> 本函数每调用Test()都会输出 $w3sky 的值并加一。 静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。...以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止: 静态变量与递归函数的例子: 注: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。 声明静态变量例子: <?

3.3K20

PHP之static静态变量详解(一)

静态变量虽在程序的整个执行过程始终存在,但是在它作 用域之外不能使用。 另外,属于静态存储方式的变量不一定就是静态变量。...例如:外部变量(在PHP中指全局变量)虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。...2、静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件不能使用它。...static静态变量会被放在程序的全局存储区(即在程序的全局数据区,而不是在堆栈中分配,所以不会导致堆栈溢出),这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。...php //--------------如何理解static静态变量-----------   /** 普通局部变量 */ function local() {     $loc = 0; //这样,如果直接不给初值

2.1K31

PHP变量

PHP变量是用于储存信息的容器,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用赋值方法与数学的代数相类似 1、在PHP变量是用于储存信息的容器,类似于数学的集合...> PHP是一门弱类型语言 不必向PHP声明该变量的数据类型,PHP会根据变量的值,自动把变量转换为正确的数据类型 PHP变量作用域 变量的作用域是脚本变量可被引用,使用的部门 PHP有四种不同的变量作用域...除了函数外,全局变量可以被脚本的任何部分访问,要在一个函数访问一个全局变量,需要使用 global关键字。 在 PHP函数内部声明的变量是局部变量,仅能在函数内部访问 <?...在函数内调用函数外定义的全局变量,我们需要在函数变量前加上 global关键字 每次调用该函数时,该变量将会保留着函数前一次被调用时的值,需要注意的是,该变量仍然是局部变量 如果变量$x去掉static,你会发现,每次都是0,0,0,并不会保留上一次的值 参数作用域 参数是通过调用代码将值传递给函数的局部变量

23710

【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 )

一、静态成员变量概念 1、静态成员变量引入 在 C++ 类 , 静态成员变量 又称为 静态属性 ; 静态成员归属 : 静态成员变量 是特殊的成员变量 , 是 类所有的 成员 , 而不是对象所有的成员...: 只对 类内部已定义的 静态成员变量 进行单纯的赋值 ; // 在函数为 类 静态成员变量 赋值 Student::number = 2; 4、静态成员变量访问 静态成员变量访问 : 使用域操作符访问..., 在 程序生命周期 之内 , 类的多个对象的 静态成员的值 是相同的 ; 二、完整代码示例 下面的代码 : 定义了 Student 类 , 其中定义了 静态成员变量 number ; // 在类内部定义静态成员...:number = 1; 单独进行 静态成员变量 初始化 , 代码为 Student::number = 2 ; // 在函数为 类 静态成员变量 赋值 Student::number = 2;...// 类名::静态成员变量名 cout << "Student::number = " << Student::number << endl; // 在函数<em>中</em>为 类 <em>静态</em>成员<em>变量</em> 赋值 Student

28320

PHP类的静态(static)方法和静态(static)变量使用介绍

php,访问类的方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法没有使用$this,即没有调用静态变量/方法,当然,调用静态变量/方法没有问题...使用class::… 调用静态方法/变量,不需要执行构造函数创建对象; 3. 使用class::… 调用静态方法/变量,也不需要执行构造函数创建对象。...静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

4.1K10

Java静态方法不能调用静态方法的原因

如图,是Java静态代码和实例对象互相调用的规则,我们接下来就讲讲为什么在Java静态方法不可以调用静态代码呢。...静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。...因此在对象未存在时非静态方法也不存在,静态方法自然不能调用一个不存在的方法。...(2)这里用null的话(即(Test)null)是将Test引用强制转换为Test对象,这样也可以调用静态方法,其实不需要null,也是可以调用静态方法的,即Test.Print()。...(3)不能用一个值为null的引用类型变量调用静态方法,这样会抛出空指针异常,但是静态方法可以被一个值为null的引用类型变量调用而不会抛出空指针异常。

5.4K50

Java静态变量(类变量)、实例变量、局部变量和成员变量

学习Java的过程,一开始很容易被这些各种变量绕晕,这篇博客主要介绍了这几种变量之间的关系和区别。...//成员变量静态变量(类变量) public static String level = "SSS"; //成员变量静态变量(类变量) public int getAge...成员变量:作用范围是整个类,相当于C的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括实例变量静态变量(类变量); 实例变量:独立于与方法之外的变量,无static修饰,...声明在一个类,但在方法、构造方法和语句块之外,数值型变量默认值为0,布尔型默认值为false,引用类型默认值为null; 静态变量(类变量):独立于方法之外的变量,用static修饰,默认值与实例变量相似...,一个类只有一份,属于对象共有,存储在静态存储区,经常被声明为常量,调用一般是类名.静态变量名,也可以用对象名.静态变量调用; 局部变量:类的方法变量,访问修饰符不能用于局部变量,声明在方法、构造方法或语句块

2.1K20

静态局部变量静态全程变量static。

全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件。...(3)static 修饰一个函数,则这个函数的只能在本文件调用,不能被其他文件调用。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。...静态内部类相关内容会在写内部类的时候专门讲到。) 3.3 总结: (1)静态成员函数不能调用静态成员。 (2)非静态成员函数可以调用静态成员。...因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数是可以调用静态成员的。...静态全程变量 静态全程变量就是指只在定义它的源文件可见而在其它源文件不可见的变量

88620

详解java静态方法有哪些_java类静态变量

定义: 在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存才有这个方法的代码段。...原因: 因为静态方法和静态数据成员会随着类的定义而被分配和装载入内存,而非静态方法和非静态数据成员只有在类的对象创建时在对象的内存才有这个方法的代码段。...:由static和{}组成,只在类装载的时候(第一次使用类的时候)执行一次,往往用来初始化静态变量。...return t; } } } 总结: (1)static修饰的静态方法会随着类的定义而被分配和装载入内存,编译器只为整个类创建了一个静态变量的副本...(2)静态不能引用非静态这一特性,是由于静态的会随着类的定义而被分配和装载入内存这一关键点决定的;如果静态引用了非静态的,根本无法从内存中找到非静态的代码段,势必会出错,这种做法是Java虚拟机决不允许的

1.4K10

局部变量静态局部变量,全局变量静态全局变量在内存的存放区别(转)

4、全局/静态存储区,全局变量静态变量被分配到同一块内存,在以前的c语言中,全局变量又分为初始化的和未初始化的,在c++里面没有这个区分了,他们共同占用同一块内存区。  ...在调用函数或过程后,系统通常会清除栈上保存的局部变量、函数调用信息及其它的信息。栈另外一个重要的特征是,它的地址空间“向下减少”,即当栈上保存的数据越多,栈的地址就越低。...局部变量,局部静态变量,全局变量,全局静态变量区别: 局部变量:    栈区 局部静态变量静态区 全局变量:    静态区的常量区 全局静态变量静态区 在进行C/C++编程时,需要程序员对内存的了解比较精准...但是速度, 也最灵活  2.5堆和栈的存储内容  栈: 在函数调用时,第一个进栈的是主函数后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器,参数是由右往左入栈的...注意静态变量是不入栈的。  当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数的下一条指令,程序由该点继续运行。

3.5K80

java静态变量与实例变量有何区别

静态变量 静态变量用 static字符修饰,随着类的加载而加载,静态变量存放在方法池中的静态区,可以直接通过"类名.变量名直接"调用,也可以通过类的对象调用。...实例变量 实例变量相当于该类的属性,需要 "new对象 "才能被调用。而且该变量不常驻内存,当这个类不再被使用时会java回收机制所释放。...---- 实例变量静态变量区别 1.存储区域不同:静态变量存储在静态存储区域,实例变量存储在堆,会被释放。 2.静态变量与类相关,实例变量与对象相关。...3.生命周期不同,静态变量在类启动时就分配指定内存;实例变量在被对象调用后才分配内存,调用结束时内存释放。 本文共 223 个字数,平均阅读时长 ≈ 1分钟

40820

C++类静态变量静态方法使用介绍

转自:https://www.cnblogs.com/sixue/p/3997324.html 最近一直看c++相关的项目,但总是会被c++类静态成员变量静态成员函数的理解感觉很是模糊...,不明白为什么类要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下。...一:面向过程的static关键字 1.静态全局变量 定义全局变量前,加上关键字static,该变量就被定义成了一个静态全局变量. 特点: 该变量在全局数据区分配内存....,因此它不具有this指针.从这个意义上来说,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,只能调用其他的静态成员函数....在静态成员函数的实现不能直接引用类说明的非静态成员,可以引用类说明的静态成员(这点非常重要)。如果静态成员函数要引用非静态成员时,可通过对象来引用。

1.1K20
领券