理解出来ていない箇所①
説明のために index.php の注文フォームから関係ないタグを取り除いて以下に示します。
<form method="post" action="confirm.php">
<?php foreach ($menus as $menu): ?>
<input type="text" value="0" name="<?php echo $menu->getName() ?>">個
<?php endforeach ?>
<input type="submit" value="注文する">
</form>
この部分を実行すると以下の HTML が生成されます。
<form method="post" action="confirm.php">
<input type="text" value="0" name="JUICE">個
<input type="text" value="0" name="COFFEE">個
<input type="text" value="0" name="CURRY">個
<input type="text" value="0" name="PASTA">個
<input type="submit" value="注文する">
</form>
これで分かるように、 $menu->getName()
は input 要素の name 属性の値を書き出すもので個数とは関係ありません。
このフォームの「注文する」ボタンを押すと、ブラウザはフォームのデータを confirm.php に送信し、返ってきた HTML を表示します。(フォームデータの送信について詳しく学びたい場合は https://developer.mozilla.org/ja/docs/Learn/Forms/Sending_and_retrieving_form_data を参照してください。)
PHP はブラウザから受け取ったデータを連想配列変数 $_POST
に入れて confirm.php を実行します。変数の中身は $_POST["JUICE"] === "3"
, $_POST["COFFEE"] === "5"
のように、「input 要素の name の値」をキーとし、「その name の input 要素が表すテキストボックスに入力された文字列」が値になっています。
2枚目のスクリーンショットで注文確認画面として表示されているのは confirm.php が返した HTML です。個数を表示している部分は以下です。
<?php foreach ($menus as $menu): ?>
<?php $orderCount=$_POST[$menu->getName()] ?>
<p class="order-amount">
<?php echo $menu->getName(); ?>
x
<?php echo $orderCount; ?>
個
</p>
<?php endforeach ?>
4つのメニューそれぞれについて、 $orderCount=$_POST[$menu->getName()]
で注文個数を取り出して表示しています。
理解出来ていない箇所②
<?php $orderCount=$_POST[$menu->getName()] ?>
<p class="order-amount">
<?php echo $menu->getName(); ?>
x
<?php echo $orderCount; ?>
個
</p>
ここで $orderCount
は引用部1行目の <?php $orderCount=$_POST[$menu->getName()] ?>
で定義された変数です。 Menu
クラスの $orderCount
インスタンス変数とは関係ありません。
ご質問のコードで Menu
クラスの $orderCount
, getOrderCount()
, setOrderCount()
はどこからも使われていないようです。