extends(継承)

sassでもextendにもあったように、一つのcssスタイルを
別の構造に引き継がせる事が出来るように、PHPの方は
定義したクラスのメソッドを別のクラスにextends(継承)することが出来る。

継承の書式



class 継承させるクラス名 extends 継承元のクラス名{...}


まずは継承元のクラスを作成

<?php
class capusule03{
	//数値のみ入力
	private $prcie;
	//ゲッタ
	public function getPrice(){
		return $this->price;
		}
	
	public function setprice($price){
		if(false == is_numeric($price)){
			throw new Exception('価格の設定値が不正です');
			}
		$this->price = $price;
		}
	}
try{
	$csl03 = new capusule03();
	$csl03->setprice('文字列');
	$csl_price = $csl03->getPrice();
	echo '価格は'.$csl_price.'円です';
	}
catch(Exception $e){
	 echo $e->getMessage();
	}
?>

これを別のクラスに継承させる。

<?php
class FoodPrice extends capusule03{
	private $expire;
	
	public function setExpire($expire){
		$this->expire = $expire;
		}
	public function getExpire(){
		return $this->expire;
		}
	}

$extend01 = new FoodPrice();
//FoodPriceクラス内で作られたメソッド
$extend01->setExpire(10);
$extend01_expire = $extend01->getExpire();
//capusule03クラスを継承したメソッドを適用
$extend01->setprice(100);


echo '賞味期限は'.$extend01_expire.'日です<br>';
echo '料金は'.$extend01->getPrice().'円です';
?>

●出力結果
賞味期限は10日です
料金は100円です 

このようにcapusule03のクラスを引継ぎ、かつFoodPriceの独自のメソッドをインスンタンスに作成、出力が出来るようになる。

継承のメリット

コピー&ペーストするよりもextends(継承)を使うメリットは...

  • 修正が必要なときに同じコードを記述した箇所全てを書き直差無ければならない。
  • 同一のコードを記述した場所を膨大なコード群から探す手間を省略出来る点がある。

オーバーライド(継承元のメソッドの上書、修正)

オーバライドは継承元のメソッドを引用加筆して
新たな仕組みを追加したり、逆に引用したメソッドを封殺したりすることが出来る。