一、静态变量
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中的静态变量的更多相关文章

  1. 实例甜点 Unreal Engine 4迷你教程(5)之函数中的静态变量

    本小节的教程无前置教程,可直接学习,篇幅很短. 本教程浓缩起来就是一句话:函数中的静态变量在调试过程中保留值.所以需要谨慎对待. 什么意思?请先不要一步一步对着做,而整体地看一遍下面的过程: 第一步: ...

  2. matlab中的静态变量与全局变量

    matlab中的静态变量和全局变量 1.静态变量 在matlab中,和其他语言一样,函数中的变量一把都是局部变量,也就是说,在函数调用完毕后,变量就会被释放.但是有些时候回希望上次改变的变量在下一次调 ...

  3. 深入了解C#中的静态变量和静态构造函数

    深入的剖析C#中静态变量和静态构造函数: 在日常的程序开发过程经常会使用到静态变量,众所周知,静态变量时常驻内存的变量,它的生命周期是从初始化开始一直到Application结束.但是,我们经常会忽略 ...

  4. java中的静态变量---static

    用static修饰符修饰的数据成员,并不是属于那个对象的,而是属于类.静态数据成员在定义的时候已经分配了内存,而此时对象还没有建立好. 当然它也是被保存到类的方法中的,而不是对象内存中,大家都是可以访 ...

  5. C#中static静态变量的用法

    使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义 ...

  6. 关于C#中static静态变量

    C#静态变量使用static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静 ...

  7. PHP 中的静态变量的简单使用

    静态变量的初始化只能在第一次static 声明的时候进行,这些静态变量只能在声明他的函数中访问到. 例如: <?php function do_something(){ static $firs ...

  8. java中的静态变量

    大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中 ...

  9. java中的静态变量、静态方法与静态代码块详解与初始化顺序

      我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...

  10. Java中的静态变量、静态方法问题

    由关键字static所定义的变量与方法,分别称为静态变量和静态方法,它们又都被称为静态成员 1.静态方法 无需本类的对象也可以调用此方法,调用形式为“类名.方法名”,静态方法常常为其他类提供一些方法而 ...

随机推荐

  1. springboot 选择启动某个配置文件

    选择启动某个配置文件 Spring Boot配置文件提供了隔离一部分应用程序配置的方法,并可使其仅在某指定环境可用.任何有@Component和@Configuration注解的Bean都用@prof ...

  2. 提交svn的时候,提示丢失了预定增加的xxxx

    百度之,发现都是linux或者命令行下的解决方法, 经测试,右键svn目录 选择tortoisesvn 选择svn还原, 即可解决问题

  3. 《Java虚拟机原理图解》3、JVM执行时数据区

    [last updated :2014/11/7]     JVM执行时数据区(JVM Runtime Area)事实上就是指JVM在执行期间,其对计算机内存空间的划分和分配.本文将通过下面几个话题来 ...

  4. git hub的GUI软件配置与使用

    1. 安装两个软件 1. git的命令行程序--git for windows:http://git-scm.com/download/win 2. git的GUI程序--tortoisegit:ht ...

  5. [Android Studio] Android Studio使用教程(二)

    以下是本次Google I/O大会发布的IDE Android Studio使用教程第二篇: 在Android Studio使用教程(一)中简要介绍了Android Studio的基本使用,包括安装. ...

  6. Openshift 3.11和LDAP的集成

    1. OpenLDAP的安装 只记录主要步骤,详细可参考 https://access.redhat.com/solutions/2484371 # yum install -y openldap o ...

  7. Informatica 常用组件Source Qualifier之六 外部联接

    可以使用源限定符和应用程序源限定符转换在相同的数据库中执行两个源的外部联接.当 PowerCenter 执行外部联接时,它将返回其中一个源表的所有行和另一个源表中匹配联接条件的行. 如果您需要联接两个 ...

  8. Informatica pmcmd命令

    pmcmd startworkflow -sv 集成服务名称 -d 配置域名称 -u  Administrator -p Administrator -f 文件夹名称 -wait 工作流名称例如: p ...

  9. 【Web】Rest && 权限管理 && LDAP && OAuth && Nginx && Lua 等

    最好的8个 Java RESTful 框架:http://www.importnew.com/17138.html 如何设计RESTful的API权限:https://segmentfault.com ...

  10. 文件及文件夹更改通知/监测软件TheFolderSpy

    TheFolderSpy是Windows环境下一个监测文件(夹)更改,删除,创建,重命名的绿色免安装小软件,并在文件及文件夹有更改时发送Email通知管理者 该软件使用.Net开发,所以需要安装.Ne ...