您现在的位置:中国下载站学院中心网络编程PHP教程PHP基础教程 → 文章列表

第九节--绑定

作者:佚名  来源:不详  发布时间:2007-4-14 11:48:47   

减小字体 增大字体

 
 
  /*

  +-------------------------------------------------------------------------------+

  | = 本文为Haohappy读<<Core PHP Programming>>

  | = 中Classes and Objects一章的笔记

  | = 翻译为主+个人心得

  | = 为避免可能发生的不必要的麻烦请勿转载,谢谢

  | = 欢迎批评指正,希望和所有PHP爱好者共同进步!

  | = PHP5研究中心: http://blog.csdn.net/haohappy2004

  +-------------------------------------------------------------------------------+

  */

  第九节--绑定

  除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问. 函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定.

  在计算机语言中有两种主要的绑定方式—静态绑定和动态绑定. 静态绑定发生于数据结构和数据结构间,程序执行之前. 静态绑定发生于编译期, 因此不能利用任何运行期的信息. 它针对函数调用与函数的主体,或变量与内存中的区块. 因为PHP是一种动态语言,它不使用静态绑定. 但是可以模拟静态绑定.

  动态绑定则针对运行期产生的访问请求,只用到运行期的可用信息. 在面向对象的代码中,动态绑定意味着决定哪个方法被调用或哪个属性被访问,将基于这个类本身而不基于访问范围.

  Public和protected成员的动作类似于PHP的前几个版本中函数的动作,使用动态绑定. 这意味着如果一个方法访问一个在子类中被覆写的类成员,并是一个子类的实例,子类的成员将被访问(而不是访问父类中的成员).

  看例子6.10. 这段代码输出” Hey! I am Son.” 因为当PHP调用getSalutation, 是一个Son的实例,是将Father中的salutation覆写而来. 如果salutation是public的,PHP将产生相同的结果. 覆写方法的操作很类似.在Son中,对于identify的调用绑定到那个方法.

  即使在子类中访问方式被从protected削弱成public, 动态绑定仍然会发生. 按照访问方式使用的原则,增强对于类成员的访问限制是不可能的. 所以把访问方式从public改变成protected不可能进行.

  Listing 6.10 Dynamic binding 动态绑定

  <?php
   class Father
   {
     protected $salutation = "Hello there!"; //问候
      public function getSalutation()
     {
       print("$this->salutation\n");
       $this->identify();
     }
      protected function identify()
     {
       print("I am Father.<br>\n");
     }
   };
    class Son extends Father
   {
     protected $salutation = "Hey!";
  //父类中的protected $salutation 被覆写
      protected function identify()
   //父类中的protected identify() 被覆写
     {
       print("I am Son.<br>\n");
     }
   };
    $obj = new Son();
   $obj->getSalutation();
  //输出Hey! I am Son.
  ?>


在百度中搜索更多第九节--绑定相关网页 转贴于:中国下载站

  • 上一篇文章:第十节--抽象方法和抽象类
  • 下一篇文章:第八节--访问方式
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!