• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
执迷不悟。
博客园    首页    新随笔    联系   管理    订阅  订阅

PHP静态延迟绑定 static

静态延迟绑定,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,父类

posted @ 2016-03-29 02:40  执迷不悟。  阅读(999)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3