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(継承)を使うメリットは...
- 修正が必要なときに同じコードを記述した箇所全てを書き直差無ければならない。
- 同一のコードを記述した場所を膨大なコード群から探す手間を省略出来る点がある。
オーバーライド(継承元のメソッドの上書、修正)
オーバライドは継承元のメソッドを引用加筆して
新たな仕組みを追加したり、逆に引用したメソッドを封殺したりすることが出来る。