①クラス変数
ゼリークラスと継承したクラスだけで利用する変数をprotected宣言します。
②コンストラクタの記述
__constructを使用するように変更します。
これにより、派生クラスでも同様の名前でコンストラクタが継承されるため、プリンクラス、ババロアクラスでコンストラクタの記述が不要になります。
①コンストラクタの記述
コンストラクタはゼリークラスから継承されてそのまま使えるため、php5ではオーバーライドする必要がない同一の処理の場合は、そのまま継承できるので記述が不要です。
<?php //外部ファイルの取り込み //require_once("jelly5.php"); //require_once("pudding5.php"); //require_once("babaroa5.php"); function __autoload($className){ include_once($className . ".php"); } //初期設定 $syurui = "1"; $aji = "1"; $amasa = "0"; $topping = "0"; $kansei = ""; if($_SERVER["REQUEST_METHOD"] == "POST"){ if(isset($_POST["submit"])){ //種類 if(isset($_POST["syurui"])){ $syurui = $_POST["syurui"]; } //味 if(isset($_POST["aji"])){ $aji = $_POST["aji"]; } //甘さ if(isset($_POST["amasa"])){ $amasa = $_POST["amasa"]; } //トッピング if(isset($_POST["topping"])){ $topping = $_POST["topping"]; } //インスタンスの作成 switch($syurui){ case "1": $obj = new jelly5($aji); break; case "2": $obj = new pudding5($aji); break; case "3": $obj = new babaroa5($aji); break; } $obj->toudo($amasa); $obj->ue($topping); $kansei = $obj->dekiagari(); } } ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h2>ぷろぷるスィーツ♪ご注文♪</h2> <?php if($kansei > ""){ echo "<b>$kansei</b><br><br>"; echo "ですね(*^_^*)♪"; } ?> <hr> <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST"> こちらからお好みをお選びください!<br> <table border="1" width="600" cellspacing="0" cellpadding="0"> <?php //種類 ?> <tr> <td align="center" width="150" bgcolor="#e9967a">種類</td> <td align="left" width="450"> <input type="radio" name="syurui" value="1"<?if($syurui=="1"){echo " checked";}?>>ゼリー <input type="radio" name="syurui" value="2"<?if($syurui=="2"){echo " checked";}?>>プリン <input type="radio" name="syurui" value="3"<?if($syurui=="3"){echo " checked";}?>>ババロア </td> </tr> <?php //味 ?> <tr> <td align="center" width="150" bgcolor="#e9967a">味</td> <td align="left" width="450"> <input type="radio" name="aji" value="1"<?if($aji=="1"){echo " checked";}?>>オレンジ <input type="radio" name="aji" value="2"<?if($aji=="2"){echo " checked";}?>>苺 <input type="radio" name="aji" value="3"<?if($aji=="3"){echo " checked";}?>>マンゴー <input type="radio" name="aji" value="4"<?if($aji=="4"){echo " checked";}?>>珈琲 <input type="radio" name="aji" value="5"<?if($aji=="5"){echo " checked";}?>>ミルク </td> </tr> <?php //甘さ ?> <tr> <td align="center" width="150" bgcolor="#e9967a">甘さ</td> <td align="left" width="450"> <input type="radio" name="amasa" value="0"<?if($amasa=="0"){echo " checked";}?>>なし <input type="radio" name="amasa" value="1"<?if($amasa=="1"){echo " checked";}?>>ちょっぴり <input type="radio" name="amasa" value="2"<?if($amasa=="2"){echo " checked";}?>>ほんのり <input type="radio" name="amasa" value="3"<?if($amasa=="3"){echo " checked";}?>>とっても <input type="radio" name="amasa" value="4"<?if($amasa=="4"){echo " checked";}?>>めちゃめちゃ </td> </tr> <?php //トッピング ?> <tr> <td align="center" width="150" bgcolor="#e9967a">トッピング</td> <td align="left" width="450"> <input type="radio" name="topping" value="0"<?if($topping=="0"){echo " checked";}?>>なし <input type="radio" name="topping" value="1"<?if($topping=="1"){echo " checked";}?>>生クリーム <input type="radio" name="topping" value="2"<?if($topping=="2"){echo " checked";}?>>フルーツソース <input type="radio" name="topping" value="3"<?if($topping=="3"){echo " checked";}?>>苺 <input type="radio" name="topping" value="4"<?if($topping=="4"){echo " checked";}?>><font color="//e9967a">秘密</font> </td> </tr> </table> <font color="//e9967a">秘密のトッピングについてはお楽しみです♪</font><br> <input type="submit" name="submit" value=" 注文する "> </form> </body> </html>
<?php //ゼリークラス class jelly5{ protected $m_aji = "味なし"; protected $m_amasa = ""; protected $m_topping = ""; //コンストラクタ function __construct($aji){ $this->m_aji = $this->aji($aji); } //味 protected function aji($aji){ switch($aji){ case "1": return "オレンジ"; break; case "2": return "苺"; break; case "3": return "マンゴー"; break; case "4": return "珈琲"; break; case "5": return "ミルク"; break; } } //甘さ function toudo($amasa){ switch($amasa){ case "0": $this->m_amasa = "甘くない"; break; case "1": $this->m_amasa = "ちょっぴり甘い"; break; case "2": $this->m_amasa = "ほんのりと甘い"; break; case "3": $this->m_amasa = "とっても甘い"; break; case "4": $this->m_amasa = "めちゃめちゃ甘い"; break; } } //トッピング function ue($topping){ switch($topping){ case "0": $this->m_topping = ""; break; case "1": $this->m_topping = "生クリームがたっぷりのった"; break; case "2": $this->m_topping = "フルーツソースがかかった"; break; case "3": $this->m_topping = "苺がのった"; break; case "4": $this->m_topping = $this->himitsu(); break; } } //秘密 protected function himitsu(){ return "お肌がすべすべになるエキスが入っている"; } //出来上がり function dekiagari(){ return $this->m_amasa . $this->m_topping . $this->m_aji . "ゼリー"; } } ?>
<?php //プリンクラス class pudding5 extends jelly5{ //秘密 protected function himitsu(){ return "一口食べると寿命が10年延びる"; } //出来上がり function dekiagari(){ return $this->m_amasa . $this->m_topping . $this->m_aji . "プリン"; } } ?>
<?php //ババロアクラス class babaroa5 extends jelly5{ //秘密 protected function himitsu(){ return "食べると口からダイアモンドが出てくる\(^o^)/"; } //出来上がり function dekiagari(){ return $this->m_amasa . $this->m_topping . $this->m_aji . "ババロア"; } } ?>