php中static的用法
来源:互联网 发布:中华家长 知乎 编辑:程序博客网 时间:2024/06/05 06:55
大家都知道,static是静态变量或者静态方法的修饰符,那么就static的用法举几个简单的例子加以说明
在普通函数中的用法:
function test(){
static $a = 1;
$a +=1;
echo $a.' ';
}
test(); //2
test(); //3
test(); //4
说明:普通函数中,static 局部变量当函数被执行的时候,只初始化一次,然后保存函数作用以后的值,下次再调用的时候,用的是作用以后的值,不会再初始化
类中static的用法:
需要说明的是,如果实例化了一个对象,那么var_dump($object)的时候,静态属性不会显示出来
class A{
public static $a = 1;
public function test(){
self::$a +=1;
echo self::$a;
var_dump($this); //object(B)#1 (0) { }这里说明下的是$this的用法,后面单独说
}
}
class B extends A{
}
$b = new B;
$b->test(); //2
B::$a = 'hello';
echo A::$a.'||'.B::$a; //hello||hello
如果子类中没有重写父类的属性,那么公用其中的一个$a,在子类的对象或者父类静态调用或者改变$a的值的时候,那么这个值就会改变,无论子类或者父类再调用的时候,都会显示改变后的值。
class C{
public static $a = 1;
public function test(){
self::$a +=1;
echo self::$a.'||';
}
}
class D extends C{
public static $a = 'hello';
}
$d = new D;
$d->test();
echo C::$a.'||'.D::$a;
D::$a = 'hello,world';
echo '<br/>';
echo C::$a.'||'.D::$a;
执行结果:
2||2||hello
2||hello,world
如果子类中重写了静态属性,那么相当于父类和子类中各有一份自己的$a,改变任何其中的一个不会对另外的那个类造成影响。
static还有另外的一种用法是static可以做静态延迟绑定。
class A{
public static $name = 'xiaoming';
public static function f(){
echo static::$name;
}
}
}
class B extends A{
public static $name = 'xiao';
public static function f1(){
echo self::$name;
}
}
A::f();
B::f1();
B::f();
输出的结果是:
xiaomingxiaoxiao
其中static代表的是当前调用类,是在执行脚本的时候去调用的,可以理解为,是和类B绑定的,所以才会输出B的name。
至此static的用法已经算是完成,其实也就是上述的三种:
1.局部变量
2.类的成员,包括成员属性和成员方法
3.静态延迟绑定
- php中static的用法
- PHP中static的用法
- PHP中static的用法
- php Static的用法
- php的static用法
- PHP Static的用法
- php中类的static方法和属性的用法
- php中static关键字的用法(未完)
- php中static静态变量的用法介绍
- php中static关键字的用法(未完)
- JAVA中static的用法
- c++ 中static的用法
- c中static的用法
- Java 中 Static的用法
- c 中 static的用法
- java中static的用法
- C中static的用法
- c中static的用法
- Java中的阻塞队列ArrayBlockingQueue的使用
- 在Linux上安装Redmine与apache整合进行项目管理
- 学习Android之第八个小程序文件保存(Notification、AndroidTestCase)
- XTU 1198 Candy
- 我说
- php中static的用法
- 草根站长如何赚到人生第一个100万
- 基于UDP的Socket编程
- android之ViewFlipper详解一
- opencv 各种特征
- Ubuntu使用说明
- 网络游戏服务器构架设计(一):前言
- 关于单个字符怎么转换成字符串的问题
- 2014百度之星资格赛——1004 Labyrinth(dp)