前提・実現したいこと
PHPオブジェクト指向において、methodの引数を型指定で可能なことをクラス継承を用いて実現したいのですが出来ません。
お世話になっております。
PHPのオブジェクト指向の学習を初めたばかりです。非常に初歩的な質問で申し訳有りません。
どうしても解決できなくて困っております。諸兄の皆様にご教授頂きたいと思います。宜しくお願いいたします。
以下の出力結果を得たいのですが
たまさんの入場料金は 0 円です。
ゆたぼんさんの入場料金は 400 円です。
あじーさんの入場料金は 800 円です。
ぎんさんの入場料金は 500 円です。
下記のコードでは以下の出力となってしまいます。
さんの入場料金は 円です。
さんの入場料金は 円です。
さんの入場料金は 円です。
さんの入場料金は 円です。
該当のソースコード
PHP
1class Human 2{ 3 protected $name; 4 protected $age; 5 6 function __construct($name, $age) { 7 $this->name = $name; 8 $this->age = $age; 9 } 10} 11 12class Zoo extends Human { 13 protected $zoo_name; 14 protected $age_price; 15 16 function __construct($zoo_name, $age_price) { 17 parent:: __construct($name, $age); 18 $this->$zoo_name; 19 $this->$age_price; 20 } 21 22 function info_entry_fee() { 23 if($this->age <= 5){ 24 print($this->name."さんの入場料金は ".$this->age_price["infant"]." 円です。"."\n"); 25 }elseif($this->age <= 12){ 26 print($this->name."さんの入場料金は ".$this->age_price["children"]." 円です。"."\n"); 27 }elseif($this->age <= 64){ 28 print($this->name."さんの入場料金は ".$this->age_price["adult"]." 円です。"."\n"); 29 }elseif($this->age <= 120){ 30 print($this->name."さんの入場料金は ".$this->age_price["senior"]." 円です。"."\n"); 31 } 32 } 33} 34 35$zoo = new Zoo("旭山動物園",[ "infant" => 0, "children" => 400, "adult" => 800, "senior" => 500]); 36 37$human1 = new Human("たま",3); 38$human2 = new Human("ゆたぼん",10); 39$human3 = new Human("あじー",32); 40$human4 = new Human("ぎん",108); 41 42$humans = [ $human1, $human2, $human3, $human4 ]; 43 44foreach($humans as $human){ 45 $zoo->info_entry_fee($human); 46}
補足情報(FW/ツールのバージョンなど)
MacOS PHP7.3.11
回答1件
あなたの回答
tips
プレビュー