PHPの基本

PHPの基本文法
1.![スクリーンショット 2024-01-23 002202.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3666066/b3a40589-b74c-5a15-4de5-d5784153c2d3.png)
2. 末尾にセミコロンが要る
3．出力には、echo
4. 関数は処理をまとめるもの
5. 関数内の処理の結果は返り値で、return 返り値
6. returnが出たら、処理が終了。Returnの後の処理は無視される
7. 条件式：if(){
          処理;
          }
8. 配列
次に配列の要素で繰り返して取り出す方法を説明します。これはすごくよく使うので、かなり重要です。
たとえば、配列の要素を順番に取り出してそれらを表示するということがあります。そういうときにforeach文というのをよく使います。
foreachは以下のように記述します。
 ![１.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3666066/0946dfec-3370-1d9d-6487-3c407398ccd0.jpeg)











PHPの実務
1．Index.phpを作成する
　➀HTML＆CSSで静的なmenuページを作成
　➁URL,商品名、価格をPHPの配列呼び出しで代替：＄product[‘price’]
  ③PHPのforeachでitemを１つにする：foreachでcardを囲む
④配列を別ファイルに移動し、require＿once
⑤税込み価格を表示するfunction(関数)を別ファイルで作る

2.cart.phpを作成する
　➀HTML＆CSSで静的な注文ページを作成
➁index.phpで入力された数字は、cart.phpで受け取る
　(1)index.phpのFormタグでcards-containerを囲む
　(2)index.phpのinputタグにname属性を追加する
　　と配列にidを追加
　(3)index.phpのformタグと一番下のinputタグ（カードに追加）と関連をつけるために、formタグのid属性（id=’cart’）を追加、一番下のinputタグにform属性（form=’cart’）を追加。
　カードに追加ボタンを押すと、cart.phpページに飛びます。

③cart.phpの商品数のところに、$_POST[‘avocado’]で受け取れる。
④foreachでcart-itemを１つに、cart.phpの中に、Formタグでcart-itemを囲む
⑤if文で注文数が０の商品を非表示にする。Foreachの内側にif文を入れる
⑥(1)cart.phpの最上部にforeachを使って、注文合計税込み金額$sumを計算する
  (2)cart.phpの最下部のinputの合計金額のところに、$sum.’円を決済する’を書く

3．Class
 ➀classはデータ（プロパティ）と処理（メソッド）の塊です。
 ➁ ![２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3666066/0cced0e3-7fad-84f4-a373-470992e262dd.png)

　例：publicという前提で、$banana->nameで、nameプロパティの値を取得することができる
 ③ ![５.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3666066/7171df21-eecd-6041-e091-f2a0e1dc4090.png)

④classの書き方
　(0)classのファイル：product.phpを作成(次はインスタンス生成のファイル：products.phpを作る)
　(1)classを定義する
　(2)private $name のように、プライベートプロパティ（データ）を定義する
　(3) public function __construct($id, $name, $price, $image){  //publicというのは、インスタンスからデータを取得することも書き換えることもできます
            $this->id = $id;
            $this->name = $name;     //publicをprivateに変えたら、インスタンスからデータを取得することも、書き換えることもできなくなる
            $this->price = $price;      //public function メソッド(){},
publicだから、インスタンスからアクセスができる
            $this->image = $image;
        }
以上のように、一気にインスタンスのプロパティ（データ）達に、値を付与できる準備をする
(4) public function getId(){
            return $this->id;
        }

    public function getName(){    
            return $this->name;         //それで、($banana->name で取得できるので）、$this->nameで値を取得する
        }
Privateで定義されたプロパティ（データ）の値をインスタンスから取得できるように、publicのメソッドを作っている

(5)インスタンスを生成する(別ファイルで、products.phpを作る)
 $products = [
        new Product('avocado', 'アボカド', 230,'./img/image_1.jpg' ),
        new Product('orange', 'オレンジ', 100, './img/image_2.jpg'),
        new Product('lemon', 'レモン', 80, './img/image_3.jpg'),
        new Product('pineapple', 'パイナップル', 1200, './img/image_4.jpg')
    ];
Index.phpのforeach($products  as product ){}はまだ利用できる理由は、$productsは配列であることが変わってない。
new Product('avocado', 'アボカド', 230,'./img/image_1.jpg' ),
はconstructに引数を渡す済みです。見た目はインスタンス　new Product()ですが、
その中身はもう'avocado', 'アボカド', 230,'./img/image_1.jpg'と同じものになっています。だから、foreach($products  as product){}は成立する

(6)class（product.php）で、税込み価格を表示させるメソッドを作る

4．
➀cart.phpの決済ボタンinputタグをformタグで囲んで、payment.phpへ飛ばせるよう
<form method="post" action="payment.php">
            <div class="btn-footer bg-gray">
                <input class="checkout-btn" type="submit" value="<?php echo Cart::calTotalPrice().'円を決済する'; ?>">
            </div>
</form>



まとめ
1． index.php(メニュー画面)、cart.php(注文画面)、payment.php(決済完了画面)という
３つのWEBページ（html＆php）を作る

2．Classesには、Class Product(class と　インスタンス　2つのファイル)、Class Cart(インスタンスなし)