戻る

クラスを使用したプログラム(PHP5)

jellyとjelly5の違い

①クラス変数
ゼリークラスと継承したクラスだけで利用する変数をprotected宣言します。

②コンストラクタの記述
__constructを使用するように変更します。
これにより、派生クラスでも同様の名前でコンストラクタが継承されるため、プリンクラス、ババロアクラスでコンストラクタの記述が不要になります。

puddingとpudding5、babaroaとbabaroa5の違い

①コンストラクタの記述
コンストラクタはゼリークラスから継承されてそのまま使えるため、php5ではオーバーライドする必要がない同一の処理の場合は、そのまま継承できるので記述が不要です。

┣index.php

<?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>

┣jelly5.php

<?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 . "ゼリー";
	}
}
?>

┣pudding5.php

<?php
//プリンクラス
class pudding5 extends jelly5{

	//秘密
	protected function himitsu(){
		return "一口食べると寿命が10年延びる";
	}
	
	//出来上がり
	function dekiagari(){
		return $this->m_amasa . $this->m_topping . $this->m_aji . "プリン";
	}
}
?>

┣babaroa5.php

<?php
//ババロアクラス
class babaroa5 extends jelly5{
	
	//秘密
	protected function himitsu(){
		return "食べると口からダイアモンドが出てくる\(^o^)/";
	}
	
	//出来上がり
	function dekiagari(){
		return $this->m_amasa . $this->m_topping . $this->m_aji . "ババロア";
	}
}
?>

inserted by FC2 system