名字绑定

在程式設計語言中,名字绑定是把实体(数据或/且代码)关联到标识符。标识符绑定到实体被称为引用该对象。机器语言没有内建的标识符表示方法,但程序设计语言实现了名字与对象的绑定。绑定最初是与作用域相关,因为作用域确定了哪个名字绑定到哪个对象——在程序代码中的哪个位置与哪条执行路径。

绑定时机

  • 静态绑定(Static binding)或称早绑定(early binding):名字绑定发生在程序开始运行之前。
  • 动态绑定(Dynamic binding)或称迟绑定(late binding)、虚绑定(virtual binding):名字绑定发生在程序运行时。具体说,上例中的self::$word如果改为下例中的static::$word,关键字static指示运行时才绑定,B::hello()的调用结果将是"bye":

class A
{
static $word = "hello";
static function hello() { print static::$word; }
}

class B extends A
{
static $word = "bye";
}

B::hello();

参见
*

  • 分支表
  • 动态分派
  • (HOAS)

参考文献

评论 (0)

  • 还没有评论,来抢沙发吧。