21日目。ProgateのPHPⅣでお料理サイトをパワーアップしました!


21目の今日はProgateのPHPⅣ。お料理サイトをパワーアップです!

トータルで4時間、いまいちピンとこないままクリアしたので、もう一回復習しました。
foreachとかif分は見なくても書けるようになりました。
一方で、$ありなし、privateとpubicの使い分け、staticのありなしと、こんがらかってしまいます。

それから、Progateを進めるコツがわかりました!
①分からなかったら、画面を更新してどのPHPの何行目でエラーになっているか確認。
②全部解けなくても「確認して次へ」ボタン。どこで引っかかったかヒントが出てきます。

行き詰まってもだいたいこれで見つけられる感じです。
・・・でもヒントが時々間違っているという罠(笑)完璧じゃなくてもクリアするケースも(汗)

プログラミングだからしょうがないんですが、一文字違うと動かないんですね。
それがどこでを見つけるのがまた大変。

とりあえず達成感で一杯です!

Progateお料理サイト
http://appdays.herokuapp.com/Day21

リンクを作ろう

<a>タグで囲むだけ。楽勝!

クエリ値を渡す

次のページに必要な情報を渡すことができる。
この場合はshow.phpCURRYを渡している。
はてな?で区切ってクエリ=内容に気がつくのに手間取りました。

詳細ページの中身を作ろう

クラスメソッド = public static functionでいいのかな?
Menuクラスの呼び出し方はMenu::findByName()
カッコや一文字違いでエラーがあちこち。それを取るのが大変!

Reviewクラスを作ろう

Menuを真似してつくればOK!

Reviewのデータを作ろう

おなじくMenuを真似してつくればOK!

レビューを表示しよう

これもMenuをまねして完成!
foreach文が難しかった。

<?php foreach($reviews as $review): ?>
          <h3><?php echo $review->getMenuName() ?></h3>
          <p><?php echo $review->getBody() ?></p>
        <?php endforeach ?>

レビューを取得しよう

メソッドとは関数のこと。public functionで定義。
ファンクションとどう違うの。こんがらかる。
http://php.net/manual/ja/language.oop5.basic.php

ヒントを見ないで作るとこんだけ間違う。
functionとstaticをまちがってた
$thisthisをまちがっていた
$review$がなんでか一個おおくて$$reviewになっていた
$reviewsForMenu[] = $review;[]が足りなかった。
return $reviewsForMenu;の位置が間違っていた

「確認して次へ」で間違った箇所を教えてくれるのだけど、それが間違っていたりした。
・if分の中で文字列の比較には「==」 を使いましょう → 実際は「()」が足りなかった。時々こう言うことがあるって覚えておこう。

public function getReviews($reviews) {
      $reviewsForMenu = array();
      // 引数の$reviewsの要素を繰り返し処理しましょう
      foreach ($reviews as $review) {
        // $review(配列の要素)のmenuNameプロパティと、プロパティのnameが一致するか調べます
        if ($review->getMenuName() == $this->name) {
          // $reviewを戻り値用の配列に追加します
          $reviewsForMenu[] = $review;
        }
      }
      return $reviewsForMenu;
    }

###Userの追加
class,__construct ゲッターの追加。
classの中にみんな全部いれるんだった。に気がつくのに手間取った。

###UserとReviewを紐付けよう (10分)
同じことも3回目だとなんとなく手が動く感じ。
一文字違うとエラーになるし、なかなか見つからないのにイラつく!

###ユーザーの情報を表示しよう
セミコロンがいるとかいらないとか
ゲットするとかしないとか
日本語が良く分からなかったり・・・
$reviewに対して、引数を$usersとしてgetUserメソッドを呼び出して、戻り値を変数$userに代入してください

###ReviewとUserの紐付け
IDを生成してレビューと紐づける。
IDのカウントアップで悩みました。

self::$count++;

// idプロパティにクラスプロパティ$countの値を代入してください
$this->id = self::$count;

完成!