1. Home
  2. /
  3. Web technology
  4. /
  5. PHP
  6. /
  7. OOP
  8. /
  9. [ PHP ] –...

[ PHP ] – OOP 11 封裝 Encapsulation

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

物件導向的一大特性就是 封裝 Encapsulation ,你只要生成類別 然後 傳參數,之後就等飯吃就好了,細節就交給別人去做吧,省事又不會容易出錯。

class ck {
	private $budget;//預算
  	private $buy_status = false;//菜買了嗎?
  	private $preapare_status = false;//備好菜了嗎?
  	private $cooking_tatus = false;//煮好菜了嗎?
  	private function buy(){ //最少要有500塊才夠買菜
		return $this->buy_status = $this->budget > 500 ? true : false;
	}
	private function preapare(){ //備料 要先買好菜才能夠洗菜 切菜 做備料的動作
		return $this->preapare_status = $this->buy_status ? true : false;
	}
	private function cooking(){ //煮飯 要先備料好才能夠煮
		return $this->cooking_tatus = $this->preapare_status ? true : false;
	}
	public function serve($budget){ //上菜 你只能呼叫這個 因為它是公開的方法 其它的都不允許 在類別之外呼叫 達到保護資料確保流程正確
		$this->budget = $budget;
		echo '<br>'.( $this->buy() ? '買好菜了' : '不夠錢');
		echo '<br>'.( $this->preapare() ? '備好菜了' : '還沒買菜');
		echo '<br>'.( $this->cooking() ? '煮好菜了' : '還沒備菜');
		echo '<br>'.( $this->cooking_tatus ? '上菜囉!' : '還沒煮好哦!');
	}
}
//封裝的好處 上菜的順序 拿錢 買菜 備菜 煮菜 最後才能上菜
$c = new ck();
$c->serve(600);//我們只要呼叫上菜 跟 給錢 前置作業的細節跟流程不用管他,卡在那個階段也會跟你說明
echo '<br>';
class ck1 { // 我們把所有的屬性方法都設公開
	public $budget;//預算
  	public $buy_status = false;//菜買了嗎?
  	public $preapare_status = false;//備好菜了嗎?
  	public $cooking_tatus = false;//煮好菜了嗎?
  	public function buy(){ //最少要有500塊才夠買菜
		return $this->buy_status = $this->budget > 500 ? true : false;
	}
	public function preapare(){ //備料 要先買好菜才能夠洗菜 切菜 做備料的動作
		return $this->preapare_status = $this->buy_status ? true : false;
	}
	public function cooking(){ //煮飯 要先備料好才能夠煮
		return $this->cooking_tatus = $this->preapare_status ? true : false;
	}
	public function serve(){ //上菜
		echo '<br>'.( $this->cooking_tatus ? '上菜囉!' : '還沒煮好哦!');
	}
}
$a = new ck1();//你就要辛苦的自已 一個一個給值 然後照順序的呼叫方法 不然你永遠吃不了飯
$a->budget=600;
$a->buy();
$a->preapare();
$a->cooking();
$a->serve();
echo '<br>';
$b = new ck1();
$b->budget=600;
$b->preapare();//怎麼還沒買菜就先備菜?
$b->buy();
$b->cooking();
$b->serve();//看吧!你永遠也吃不了飯了
//顯示結果
/*
買好菜了
備好菜了
煮好菜了
上菜囉!
上菜囉!
還沒煮好哦!
*/

評等結果
點擊便能為這篇文章進行評等!
[評等總次數: 0,平均評等: 0]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *