PHP 5.0对象模型深度探索之绑定
在计算机语言中有两种主要的绑定方式―静态绑定和动态绑定。静态绑定发生于数据结构和数据结构间,程序执行之前. 静态绑定发生于编译期, 因此不能利用任何运行期的信息。在面向对象的代码中,动态绑定意味着决定哪个方法被调用或哪个属性被访问,将基于这个类本身而不基于访问范围。 Public和protected成员的动作类似于PHP的前几个版本中函数的动作,使用动态绑定。如果是一个普通的user,PHP调用User::isAuthorized会返回FALSE.如果是一个AuthorizedUser的实例,PHP调用AuthorizedUser::isAuthorized,将允许deleteUser顺利执行。为了回答这个问题, 你需要回忆一下为什么需要有private成员.什么时候用它们来代替protected成员是有意义的?一定的情况下需要private方法或变量,例如当你确信你不想允许子类改变父类中的某个特定的部份。
用户评论