快速业务通道

PHP静态绑定与动态绑定

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25

<?php
   class Father
   {
       private $salutation = "Hello there!";

       public function getSalutation()
       {
           print("$this->salutation\n");
           $this->identify();
       }

       private function identify()
       {
           print("I am Father.\n");
       }
   }

   class Son extends Father
   {
       private $salutation = "Hey!";
       private function identify()
       {
           print("I am Son.\n");
       }
   }

   $obj = new Son();
   $obj->getSalutation(); //输出Hello there! I am Father.
?>

动态绑定的好处是允许继承类来改变父类的行为,同时可以保持父类的接口和功能. 看例子图3. 由于使用了动态绑定,在deleteUser中被调用的isAuthorized的version 可以由对象的类型来确定. 如果是一个普通的user,PHP调用User::isAuthorized会返回FALSE.如果是一个AuthorizedUser的实例,PHP调用AuthorizedUser::isAuthorized,将允许deleteUser顺利执行.

//haohappy注:用一句话说清楚,就是对象类型与方法,属性绑定. 调用一个父类与子类中都存在的方法或访问一个属性时,会先判断实例属于哪种对象类型,再调用相应的类中的方法和属性.

动态绑定的好处

<?php
   class User //用户
   {
       protected function isAuthorized()  //是否是验证用户
       {
           return(FALSE);
       }

       public function getName()  //获得名字
       {
           return($this->name);
       }

       public function deleteUser($username) //删除用户
       {
           if(!$this->isAuthorized())
           {
               print("You are not authorized.\n");
               return(FALSE);
           }

           //delete the user
           print("User deleted.\n");
       }
   }

&nb

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号