Progate PHP学習レッスンⅡ④
おはようございます。
Progate PHPって難しいよな~と思って、Google検索してみると、同じように難しい、難しいとコメントされている人が見つかりました。
自分だけじゃなくてよかった・・、という安心感を感じると共に先人の記録に感謝です。何かをやる時に、同じように共感してくれる人がいるとそれだけで救われる気がします。インターネットだと、時間と空間に制限されずに記憶や経験を共有できるので良いですね。
魯迅の「故郷」という作品の中に次のような一説があるそうです。
先輩方が歩いた道を歩いて、転んでいきたいと思います。
PHP 学習レッスンⅡ
9.HTMLとPHP(2)
endif/endforより
基本的な書き方はendforと同じ。
foreach先にやってたから、感触的に分かりやすい。
演習 : 早速難しそう。
$menu定義して、配列に入れるところから。
とりあえず、最初から書いてくれているコードから読む。
クラスでMenu作って、パブファンでコンストラクタ作れるようにしてる。
そのあと、echoして、メニュー名を出力するみたいな
そのあとに、コンストラクタ(インスタンス)4体生成。
これを配列に順番に入れて、変数にmenu代入。
Array使うんだろーなということまでわかるけど構文わかんないと思ったら、ヒントに書いてくれてたので、入力。
Progate確かに難しいけど、コメント分にここに書けばOKって書いてくれているから、まだ戦える。
流石にforeach構文暗記でスライド参照
foreachするときには<?php ?>三連弾
と思ったら、最初にarray組んでたから2回で良さそう。
<?php foreach($menus as $menu):?> 暗記する必要はないが、{が:に。
phpさきだと思ったら、p先だった。
menuは変数の$menuで表記。'とか"とか要らない。変数だから。文章にくっつけないから結合演算子もいらないのかな~。多分。
なぜはエラーが消えない。
良く分からないから、解答見る。
なるほど・・・例題スライドそのまま見て書いてたから分からなかったけど、menuの後にnemeプロパティ必要。menuはただの変数(箱)
× echo $menu → 〇 echo $menu->name
ちなみに、タグもpじゃなくh3に回答なっている。
問題文に書いてあった (よく読みましょう)
まだ、エラー消えない。再度解答見る。
勢いあまって、?php閉じる?>も消えてた。
まじで、転ぶどころじゃなく、既に転げまわっている気がする。そこら中に石がある・・・。もしくは何もないところで一人でこけている。。
ここにきて、できたと思ったら、array配列エラー
大かっこの変数で入れましょう。array[$juice,・・]
ヒントの文そのまま入れてたのが敗因
受け付けてもらえない。
回答見る。
arrayは小()だった。
なぜ・・・、と思ったら、progate先生のコメントが解列[]大かっこで書いてあるのをそのまま書いてしまったことが原因。きちんと理解できていなくてごめんなさい。バカでごめんなさい。
ようやくクリア
転びすぎて心が折れそう。
2周目した方が良さそうだと思った回
10.require_once
一度限りの要求?
コードが長くなってきたので、表示用ファイル(index.php)とクラス定義用ファイル(menu.php)とデータ定義用ファイル(data.php)を分けましょうの巻
require_onceを使うと別のphpファイルを読めるらしい。
読んだものは、そのファイル内で使えるとのこと。
pythonとかでライブラリを最初に読み込ませる的なもののファイル版?
読み込ませるときに、直ぐに閉じてよいかどうかがよく分からない。ファイルみてると、直ぐ閉じても良さそうだけど。
呼び出し元には何も記述必要無し。
変数やクラスなんでもいけそう。
いきなり演習
演習 : index内のコードを他のファイルに移そうという内容。
丁寧に指示してくれていてくれて分かりやすい。
コード内に指示があるとやっぱりやりやすい。
require_onceの書き方が分からなくてスライド参照
require_once('ファイル名');という書き方。
そういうことか・・・。
あらためて、スライド読み直すとphpを直ぐに閉じるときと、閉じない時の違いが分かった。
閉じない時 <?php require_once('menu.php'); 色々書く~?>
閉じる時 <?php require_once('data.php')?>
閉じる時バージョンの方がすっきりする気がする。
が元コードが閉じていないので、閉じない時バージョンで書く
エラー発生
原因分からないので回答見る
まさかの綴り違い 間違え : repuire 正しい :require
リプワイヤーrepuireってなんだよ・・。
またエラー発生。
data.phpシートの方はreuireになってた。
誤記多すぎて悲しくなる。
正しく入力で来ていると色変わるので、気を付けよう。
なんとか終了
11.画像と価格を表示しよう
画像と価格を表示する為に、Menuクラスにimageプロパティとpriceプロパティを定義するよう。
Menuクラスの中に最初に書くのかな・・。
画像表示の注意点説明
HTMLタグにPHP埋め込む時の注意点
<img scr ="php文">の形
ダブルコーテーション忘れない。
表示する時はechoする
アロー形式だ
<?php echo $curry->image?> $curryのimageみたいな書き方
そうすると、PHPで処理されると、PHP以降の部分がhttp://~に変わるよう。そして画像表示化
はじめてPHPの動きを少し理解できた気がする。コード打ってその内容に従ってURL表示。確かにこれなら、メニューの変数$curryを変えるだけで、画像表示内容変えられるから便利そう。
演習 : いきなりpriceとimageを追加してくれとのこと。
プロパティ定義の文章が頭から抜けているので、スライド参照
public $name;で定義でいる。見ると、思い出せる。
というか、書かなきゃいけないコードの上にpublic $name;ってかいてあった。これがプロパティと認識できていなかったことが問題。
$nameとか$curryとか、プロパティと変数が引数とか$で同じように書くから混乱するんだな・・。
$でプロパティとかそういう認識しないようにしよう。位置とか文法で認識できるようにしよう。
途中でプレビュー押したら細かいエラー文が表示されて萎えるが、気を取り直して、途中から実施
new Menuの引数に値を追加するとのこと。プロパティ値とimageプロパティの文字列指定されているが、書き方が分からないのでスライドを見る。
そういえば、クラスで引数セットしたから、変数に入れたらよいかと気づいていれてみる。
セット完了。あってるかわからいけど。
<imag>scr属性にimageプロパティを表示するようにとのこと
echoの出番か・・。echo menu->image
コードの一文を見つけた
エラー発生
スライド参照
最初に注意してあった、ダブルコーテーション忘れていたことが発覚。
いや書いてるな・・。
echoのあとの$マーク忘れ・・・。
変数が理解できていないんだなと実感。$ないとただの値ですから!!
priceでは忘れなかった。
画面が正しく表示されて感動だと思ったら、オレンジジュースも珈琲の写真になっている。
アドレスのペーストミス・・。
無事オレンジジュースに。
完了!!
学習範囲 : PHP学習レッスンⅡ 9~
学習時間 : 1時間16分 (9:30~10:46 )
備考 : 転びすぎて、ビビりました。転ばずにいける人・・・、いるのか??理解不足と単純ミスが代わる代わるやってきてすごいです。
この記事が気に入ったらサポートをしてみませんか?