<?
//访问控制
//在PHP5中,可以在类的属性和方法前面加上一个修饰符(modifier),
//来对类进行一些访问上的控制。
/**
* 修饰符 同一个类中 子类中 全局
* 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;//会出异常,私有变量不能被外界访问
?>
<?
//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>";
}
}
}
class YouSelf extends You{
public function getMoney(){
return $this->youMoney;
}
}
$youSelf = new YouSelf();
$youSelf->loan(900);//借钱
echo "老婆,我这里还有 ".$youSelf->getMoney()."元";
//echo youSelf->youMoney;//出现异常,变量不能被外界访问
?>
<?
//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>钱那里去了我也不知道";
//数据危险,所以要通过封装保护数据安全
?>