php中的静态变量
一、静态变量
1.静态变量是只存在于作用域的变量,不过,在函数执行完成以后,这种变量的值不会丢失,也就是说,在下一次调用这个函数时,变量仍会记得原来的值。
2.将表达式计算出来的结果付给静态变量是不合法的。表达式是指自身的值会发生变化的任何语句,例如(1+1),$variable,anyfunc()都是表达式。
3.
你也许会想,定义静态变量似乎并不是很有用,因为可以用全局变量轻松地获取同样的结果。然而,全局变量可以被所有函数访问,所以如果两个或者更多本来应该
是独立的函数使用了相同名称的变量,就会导致冲突;并且,比起引入全局变量,使用静态变量也不需要更多的语法。因此,在只有一个函数需要访问某个变量时,
我们应该优先使用静态变量,而不是全局变量。一般说的静态变量都定义在函数中,被这个函数所用
二、类中静态元素的使用
4.在类中,static关键字有两种主要的用法,一种是用来定义静态成员,另一种是用来定义静态方法。
5.静态成员是一种类变量,可以把它看成是属于整个类而不是属于类的某个实例。与一般的实例变量不同的是,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,也就是说,所有的实例共享这个成员。
6.$this只表示当前类的实例,self::表示类本身(后面加$)
7.作用域限定操作符::
通
过作用域限定操作符,我们可以使用两个系统定义的作用域:self和parent。此外,php5.3还提供了static作用域。self表示的是当前
类的作用域,不过与$this不同的是,它不表示类的某个特定的实例。在类之外的代码中不能使用self这个操作符,而且它不能识别自己在继承树层次结构中的位
置。也就是说,在扩展类中使用self作用域时,self可以调用基类中声明的方法,但它调用的总是已经在扩展类中重写的方法。(相当于java中方法的
覆盖,明确调用父类的方法用parent)
重写父类的静态变量就在子类中定义一样的静态变量
<span style="font-size: small;"><?php
class aaa
{
function bbb(){
echo '用双冒号::调用类的方法!';
}
} //调用1:
$a = new aaa();
$a->bbb(); //调用2:
aaa::bbb();
?> </span>
两种方法得到的结果是一样的.
想不明白,为什么普通方法bbb也可以直接用类名::调用,这和java里面是不一样的
个人理解:只要被调用的普通方法里不出现$this->xx ($this只表示当前类的实例),普通方法也可以认为是直接属于类的,所以可以直接用类名调用,而不像java中方法必须要声明为static才能用类 名直接调用(php6在静态方法的操作方面做了几处修改,首先在访问非静态方法时,不再使用::操作符!这种方式要被干掉了吧。。。)
帮助父类调用子类的方法
php5.3中提出的static::
作用域使我们不再需要使用self::和parent::。当希望指向最终的实现类时,就可以使用static::,这个限定符会在代码执行之前立即计算
出继承层次结构上最后那个类的成员。这一过程被称为延迟绑定。好像没看出有什么用,直接在父类中new那个最终实现类的对象然后调用不就行了吗?但是如果
你不知道那个最终类叫什么,覆盖的方法实现了什么样的效果,这时候似乎就有用了。static::作用域也可以应用在静态方法上,这样从父类可以静态的调
用子类的方法。
参考:http://hualong.iteye.com/blog/1051599
php中的静态变量的更多相关文章
- 实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量
本小节的教程无前置教程,可直接学习,篇幅很短. 本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值.所以需要谨慎对待. 什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程: 第一步: ...
- matlab中的静态变量与全局变量
matlab中的静态变量和全局变量 1.静态变量 在matlab中,和其他语言一样,函数中的变量一把都是局部变量,也就是说,在函数调用完毕后,变量就会被释放.但是有些时候回希望上次改变的变量在下一次调 ...
- 深入了解C#中的静态变量和静态构造函数
深入的剖析C#中静态变量和静态构造函数: 在日常的程序开发过程经常会使用到静态变量,众所周知,静态变量时常驻内存的变量,它的生命周期是从初始化开始一直到Application结束.但是,我们经常会忽略 ...
- java中的静态变量---static
用static修饰符修饰的数据成员,并不是属于那个对象的,而是属于类.静态数据成员在定义的时候已经分配了内存,而此时对象还没有建立好. 当然它也是被保存到类的方法中的,而不是对象内存中,大家都是可以访 ...
- C#中static静态变量的用法
使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义 ...
- 关于C#中static静态变量
C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...
- PHP 中的静态变量的简单使用
静态变量的初始化只能在第一次static 声明的时候进行,这些静态变量只能在声明他的函数中访问到. 例如: <?php function do_something(){ static $firs ...
- java中的静态变量
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中 ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- Java中的静态变量、静态方法问题
由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员 1.静态方法 无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而 ...
随机推荐
- 计蒜之道 初赛 第三场 题解 Manacher o(n)求最长公共回文串 线段树
腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在不论什么一个方向上信号强度都 ...
- iTunes Connect App Bundles
App Bundles捆绑销售提交流程: 1. 在iTunes Connect左上「+」选「Create Bundle」到「New App Bundle」挑选已上线应用(最多可捆绑10个应用) 2. ...
- sessionid与cookie
转自:http://smiky.iteye.com/blog/649164 发现自己真的是很笨,过去一直用jsp,从来不用怕心用户信息放在session里面会找不到,现在不用jsp,前台全用html, ...
- 数学图形(1.28) EPI线
貌似由双曲线组成的图形.有时会像个自行车的轮子. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 #http://www.m ...
- PostgreSql 合并多行记录
需求描述: A表有如下数据 id 1 2 3 4 B表有如下数据 id name 1 aaa 1 bbb 1 ccc 2 aa 2 bb 3 c A表和B表通过id关联,需要查询结果如下: id na ...
- django 基础知识回顾
内容回顾: 1. ajax参数 url: type: data: 1.value不能是字典 {k1:'v1',k2:[1,2,3,],k3; JSON.string} 2.$('').serilize ...
- 在JavaScript文件中读取properties文件的方法
假设有JavaScript文件叫做:readproperties.js,这个文件需要读取config.properties这个配置文件,步骤如下: 1. 下载插件jquery.i18n.proper ...
- IIS服务器支持.apk文件下载
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...
- 【转】word排版宏的使用
原文: https://blog.csdn.net/bruce_shan/article/details/73302756 -------------------------------------- ...
- [笔记][Java7并发编程实战手冊]3.8 并发任务间的数据交换Exchanger
[笔记][Java7并发编程实战手冊]系列文件夹 简单介绍 Exchanger 是一个同步辅助类.用于两个并发线程之间在一个同步点进行数据交换. 同意两个线程在某一个点进行数据交换. 本章exchan ...