PHP面向对象之旅:访问控制
2011-07-11 00:00
1116 查看
在PHP5中,可以在类的属性和方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制。
下面表格显示了访问的权限。
比如你可以借钱给别人,但不希望别人知道你钱包里面有多少钱。我们把它用private隐藏起来。
程序运行结果如下:
程序运行结果如下:
Public 修饰的属性和方法,可以被无限制的调用。
嘿。。你的钱,不安全了。
程序运行结果如下:
下面表格显示了访问的权限。
修饰符 | 同一个类中 | 子类中 | 全局 |
private | Yes | ||
protected | Yes | Yes | |
public | Yes | Yes | Yes(默认) |
Private的访问权限
private 不能直接被外部调用,只能由当前对象调用。比如你可以借钱给别人,但不希望别人知道你钱包里面有多少钱。我们把它用private隐藏起来。
<? class You { private $youMoney = 1000; //借出钱的方法 public function loan($number) { if($this->youMoney >= $number) { $this->youMoney = $this->youMoney - $number; echo "好,这里借给你 $number 元,可是我也不多了.<br>"; } else { echo "我无法借 $number 元给你,我没有这么多钱<br>"; } } } $you = new You(); $you->loan(300); //第一次借钱 $you->loan(600); //第二次借钱 $you->loan(500); //第三次借钱 //你不能知道我钱包里面的钱数,那是我的隐私. echo $you->youMoney; //这个语句会出现异常.似有变量不能被外界访问. ?>
程序运行结果如下:
好,这里借给你 300 元,可是我也不多了. 好,这里借给你 600 元,可是我也不多了. 我无法借 500 元给你,我没有这么多钱 Fatal error: Cannot access private property You::$youMoney in E:\PHPProjects\test.php on line 28
protected的访问权限
protected 修饰的属性和方法只能被子类调用。外界无法调用。<!--protected 演示 protected 修饰的属性和方法只能被子类调用.--> <? class You { protected $youMoney = 1000; //借出钱的方法 public function loan($number){ if($this->youMoney >= $number){ $this->youMoney = $this->youMoney - $number; echo "好,这里借给你 $number 元,可是我也不多了.<br>"; }else{ echo "我无法借 $number 元给你,我没有这么多钱<br>"; } } } // 继承后的类可以方法父类的protected属性. class YouSelf extends You { public function getMoney(){ return $this->youMoney; } } $youSelf = new YouSelf(); $youSelf->loan(900); //借钱 echo "老婆,这里我还有.. ".$youSelf->getMoney()." 元"; //其他人就不允许问我了. //echo youSelf->youMoney; //这个语句会出现异常.似有变量不能被外界访问. ?>
程序运行结果如下:
好,这里借给你 900 元,可是我也不多了. 老婆,这里我还有.. 100 元
public的访问权限
数据的隐藏和封装是能够帮助我们保护数据的安全性。Public 修饰的属性和方法,可以被无限制的调用。
嘿。。你的钱,不安全了。
<? class You { public $youMoney = 1000; //借出钱的方法 public function loan($number) { if($this->youMoney >= $number) { $this->youMoney = $this->youMoney - $number; echo "好,这里借给你 $number 元,可是我也不多了.<br>"; } else { echo "我无法借 $number 元给你,我没有这么多钱<br>"; } } } $you = new You(); // 不用借钱,想拿就拿吧. $you->youMoney = $you->youMoney - 5000; echo "我现在只有".$you->youMoney; echo "<br>钱哪里去了我也不知道."; // 数据危险的太多了,通过封装可以保护数据. ?>
程序运行结果如下:
我现在只有-4000 钱哪里去了我也不知道.
相关文章推荐
- 跟着百度学PHP[4]OOP面对对象编程-9-封装性,访问控制[private、pubic、protected]
- C++primer学习:面向对象程序设计(3):访问控制与继承
- php 其它对象的访问控制
- 面向对象,控制访问
- php笔记(三)PHP类和对象之访问控制
- PHP基础之类和对象6——访问控制:public/protected/private
- PHP面向对象笔记 —— 121 public_protected_private权限控制详解
- 面向对象程序设计:继承成员访问控制机制
- 【c++】面向对象程序设计之访问控制与继承
- 【php手册:类与对象】访问控制(可见性)
- PHP对象中三种访问控制修饰符
- PHP面向对象深入理解之一(访问修饰符)
- 面向对象技术继承访问控制
- 【面向对象】php新手之学习类与对象-访问控制
- php面向对象不同类型成员访问方法 小结
- php对象中类的继承性访问类型控制
- 面向对象程序设计之访问控制、继承与拷贝控制
- MySQL_面向对象访问.php
- 面向对象特性,包括继承、封装、多态、抽象、访问控制