面向对象设计 4 —— PHP5面向对象进阶(属性的访问控制)

<?
//访问控制
//在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>钱那里去了我也不知道";
//数据危险,所以要通过封装保护数据安全
?>

你可能感兴趣的:(php php5 示例)