首页 > Web开发 > 详细

PHP静态延迟绑定 static

时间:2016-03-29 06:15:48      阅读:235      评论:0      收藏:0      [点我收藏+]

静态延迟绑定,static

>=5.3

问题:

1, $this永远代表所在类的对象?不是

2, self用于代表所在类么?

是,永远代表所在类的对象!

看逻辑:

 class p{

  public static $where=‘aaa’;

  public static function sayWhere(){

    echo self::$where;

}

}

class c extends p{

  public static $where=‘bbb’;

}

echo p::sayWhere();//aaa 

echo c::sayWhere();//aaa     

显然,当前的逻辑不是十分完善!

此时,应该是表示当前类的关键字,最好应该在调用时决定最好!(self不能做到)

此时,采用一个新的关键字,代表当前类,与self不同,在于是 运行时调用时决定,而不是在类编译时就确定好了的!

关键字是 : static

 

 class p{

  public static $where=‘aaa’;

  public static function sayWhere(){

    echo self::$where;

}

  public static function sayW(){

    echo static::$where;

}

}

class c extends p{

  public static $where=‘bbb’;

}

echo p::sayWhere();//aaa 

echo c::sayWhere();//aaa

echo P::sayW();//aaa

echo c::sayW();//bbb 

总结:

static关键字的功能:

1, 声明静态局部变量

2, 声明静态成员

3, 当前类,运行时的当前类!

 

类中,可以表示类的关键字:

self,所在类

static,调用类

parent,父类

PHP静态延迟绑定 static

原文:http://www.cnblogs.com/echo0821/p/5331407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!