前提・実現したいこと
phpでオブジェクト指向を利用して下図のような宿泊予約システムを作ろうとしています。
現状、宿泊先情報クラスと、宿泊プランクラスを作成済みなのですが、2つのクラスを組み合わせて表示させる方法が分かりません。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
宿泊先名 レビュー
・・・・・・・・・・・・・・・・・ 説明
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ 宿泊先画像 ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
宿泊先名 レビュー
・・・・・・・・・・・・・・・・・ 説明
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ 宿泊先画像 ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・ ・ プラン(内容・料金) ・
・ ・ ・・・・・・・・・・・・・・・・・・・・
・ ・
・・・・・・・・・・・・・・・・・
発生している問題
ホテル情報クラスの中に、複数の宿泊プランクラスを掲載したいが、そのやり方が分からない。
該当のソースコード
php
1<?php 2//宿泊先情報クラス生成 3class Hotel{ 4 private $name; 5 private $image; 6 private $review; 7 private $explanation; 8 9 public function __construct($hotel_name, $hotel_image, $hotel_review, $hotel_explanation){ 10 $this->name = $hotel_name; 11 $this->image = $hotel_image; 12 $this->review = $hotel_review; 13 $this->explanation = $hotel_explanation; 14 } 15 16 public function getName(){ 17 return $this->name; 18 } 19 20 public function getImage(){ 21 return $this->image; 22 } 23 24 public function getReview(){ 25 return $this->review; 26 } 27 28 public function getExplanation(){ 29 return $this->explanation; 30 } 31} 32 33//宿泊先情報インスタンス作成 34$kaede = new Hotel('楓ホテル', 'beach-house-1505461_640.jpg', '☆4', '絵本の中から出てきたような可愛らしい家具があるホテル。子ども心を思い出して楽しめる。'); 35$fuuka = new Hotel('風香ホテル', 'window-3178666_640.jpg', '☆4', 'ガラス張りの開放的な空間で木のぬくもりを感じられるホテル。自然の中で癒されて。'); 36$midori = new Hotel('緑ホテル', 'greece-844269_640.jpg', '☆3', 'ホテル周辺の石畳の小道を歩きながら、鮮やかな色合いの草花を鑑賞できる。'); 37$rabenda = new Hotel( 'ラベンダーホテル', 'building-66789_640.jpg', '☆5', 'シックな雰囲気の大人向けホテル。コーヒーがおいしいカフェも併設されている。'); 38 39$hotels = array($kaede, $fuuka, $midori, $rabenda); 40 41 ?>
php
1<?php 2//宿泊プランクラス 3class Plan{ 4 private $status; 5 private $price; 6 7 public function __construct($plan_status, $plan_price){ 8 $this->status = $plan_status; 9 $this->price = $plan_price; 10 } 11 12 public function getStatus(){ 13 return $this->status; 14 } 15 16 public function getTaxPrice(){ 17 return floor($this->price * 1.10); 18 } 19} 20 21//宿泊プランインスタンス 22 $plan1 = new Plan('アロマのお土産付き', 10000); 23 $plan2 = new Plan('アロマワックスの手作り体験付き', 11000); 24 $plan3 = new Plan('個室露天風呂付', 12000); 25 $plan4 = new Plan('読書ルーム利用付き', 13000); 26 $plan5 = new Plan('映画ルーム利用付き', 14000); 27 $plan6 = new Plan('ボードゲームルーム利用付き', 15000); 28 $plan7 = new Plan('朝食付き', 16000); 29 $plan8 = new Plan('朝食、夕食付', 17000); 30 $plan9 = new Plan('3食付き', 18000); 31 $plan10 = new Plan('送迎付き', 19000); 32 $plan11 = new Plan('スイートルーム', 20000); 33 $plan12 = new Plan('ロイヤルルーム', 21000); 34 35 $plans = [[$plan1, $plan2, $plan3], [$plan4, $plan5, $plan6], [$plan7, $plan8, $plan9], [$plan10, $plan11, $plan12]]; 36 37 ?> 38
html
1<div class="hotel"> 2 <h1>Hotel</h1> 3 <div class="info"> 4 <?php require_once('hotel_instance.php') ?> 5 6 <?php foreach($hotels as $hotel): ?> 7 <p><?php echo $hotel->getName() ?></p> 8 <img src="<?php echo $hotel->getImage() ?>"> 9 <p><?php echo $hotel->getReview() ?></p> 10 <p><?php echo $hotel->getExplanation() ?></p> 11 <?php endforeach ?> 12 </div> 13</div>
試したこと・考えたこと
上記のhtmlではホテル情報クラスのみを表示しました。
このホテル情報クラス内に3つずつ、プランクラスを掲載するために、「宿泊プランインスタンス」で二次元配列を形成しました。foreachでこの二次元配列を回せばいいのかなとも考えましたが、そのやり方が分かりませんでした。
また、継承を使うべきなのかどうかも判断できませんでした。
さらに、どうやらjavaにはクラス内クラスの機能があるようなのですが、phpにはクラス内クラスの機能を発見できませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。