O'REILLYのはじめてのPHPで勉強しています。
6-1.phpでクラスの定義をしています。
6-2.phpではオブジェクトの生成と使用となっています。
6-1.phpの最後の行(line 10)return in_array($ingredient,$this->$ingredients);で
$ingredientsに黄色の波線がでていて、黄色のビックリマークの説明は
variable '$ingredients' is undifined なっています。
6-1.phpを単独で実行すると
[Thu Apr 30 22:16:48 2020] 127.0.0.1:60898 [200]: /O'REILLY/chap06/6-1.php
エラーは出ていないようです。
'$ingredients'が定義されていないということは分かるのですが、
具体的にどこをどのように直せばいいのでしょうか。
6-2.phpを単独で実行すると
「Fatal error: Uncaught Error: Class 'Entree' not found in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-2a.php:5 Stack trace: #0 {main}thrown in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-2a.php on line 5」となります。
そこで 6-2.phpに「require '6-1.php';」追加して実行しました
エラーが6-1.php on line 10 でいっぱい出てきてお手上げです。
丸投げみたいで申し訳ないですがよろしくおねがいいたします。
期待する実行結果は以下です。
Soup contains chicken.
Sandwich contains chicken.
Sandwich contains bread.
Soup contains water.
エラーメッセージは以下のようになっています。
Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined variable: ingredients in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Notice: Undefined property: Entree::$ in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10 Warning: in_array() expects parameter 2 to be array, null given in C:\pleiades\xampp\htdocs.metadata.plugins\org.eclipse.wst.server.core\tmp0\htdocs\O'REILLY\chap06\6-1.php on line 10
該当のソースコード
php
1//6-1.php 2<?php 3class Entree{ 4 5 public $name; 6 7 public $ingredients = array(); 8 9 public function hasIngredient($ingredient) { 10 11 return in_array($ingredient,$this->$ingredients); 12 13 } 14} 15 16?>
php
1//6-2.php 2<?php 3 4// インスタンスを生成して$soupに割り当てる 5 6$soup = new Entree; 7 8$soup->name = 'Chicken Soup'; 9 10 11$soup->ingredients = array('chicken','water'); 12 13$sandwich = new Entree; 14 15// $sandwichのプロパティを設定する 16$sandwich->name = 'Chicken Sandwich'; 17 18 19$sandwich->ingredients = array('chicken','bread'); 20 21foreach(['chicken','lemon','bread','water'] as $ing){ 22 23 if($soup->hasIngredient($ing)) { 24 25 print "Soup contains $ing. <br>"; 26 27 } 28 29 if($sandwich->hasIngredient($ing)) { 30 31 print "Sandwich contains $ing. <br>"; 32 33 } 34 35} 36 37?>
試したこと
6-1.phpのpublic $ingredients = array();を
public $ingredients = ['chicken','lemon','bread','water'];にして実行してみました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。```ここに言語を入力
コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/30 13:31