CakePHP 超入門 Chapter 1, 2のちょっとしたまとめ
Quelcodeというプログラミングスクールに通い始めてから早4ヶ月が経過し、自分の成長の遅さに日々震えていますが皆様はいかがお過ごしでしょうか。
先日よりCakePHPに取り組んでおり、とりあえずテキストを1周したのでこれは覚えなあかんってことをまとめますね。
CakePHPって何?って人は自分で調べてね!多分Ruby on RailsをPHPでやる。みたいな認識でOKっぽいよ!
あと、CakePHPやる前にオブジェクト指向に関してはもう一度振り返ったほうが良いかも!
多分、この記事を読んで役立つ!と思う人は、僕と同じスクールに通ってる人くらいだと思うけど、ブログなんて自己満なので書いていきます!(時間に追われて書いてるのでテンションが高め)
この記事でカバーする範囲
スクールでは「CakePHP超入門」ってテキストが指定されているんだ!
今回はこのテキストのChapter 1,2でこれは要チェックやで!ってところをお送りするね!
なんで全体を通してじゃないのかって?全体をまとめる時間は今無いからだ。
あとね、こういうテキストって大体最初のChapterで基本を学ばせて、後半でそれを利用して何か作ろう!みたいになるのね。
でだ。最初が分かんないまま後半に進むと
分かんない * 分かんない = 全然分かんない
になるのよ。なので、まずは最初の大切なところを自分のためにまとめておきたいわけ!
それと、このテキスト全体を通してエラーが出たりするところは、スクール同期がまとめてくれたブログがあるから、そっちを見てくれよな!
Chapter 1について
まず1つお知らせがあって。僕はChapter 1はこのテキスト通りに進めてないんです。
僕はこのテキストをやる前に、まずはドットインストールでCakePHPのレッスンをやりました。Vagrantの環境を作って、そこでまあ色々やってくのよ。
なんでドットインストールやったかというと、テキストという文字情報だけで学ぶより、動画で学んだほうが概要つかみやすいなってこの4ヶ月やってきて学んだわけ。
んで、UdemyでCakePHPの動画を探したんだけど、Versionが古いのしかないのよ。世界全体で見るとCakePHPは下火っぽいし仕方ないね。
そんな時にドットインストールでレッスンあるやんってことでやってみました。
もう一つドットインストールでCakeやった理由としては、スクール同期で先にCakeに取り組んだ人が環境構築でくそ詰まってたんだよね。その解決方法は先程のスクール同期のブログに書いてると思うからそれをみてね。
僕はその環境構築で躓くのが怖くてVagrantでやったというわけ。
もしドットインストールでCakeをやるなら絶対に覚えておいてほしいのは、無心でやってね。ということ。
何も考えたらあかん。ただただ動画上で指示されたように手を動かそう。Don't think, feel.の精神だね!
なんでかというと、ドットインストールは1動画3分以下くらいでめちゃテンポ良い。けど、細かい説明全然ない!仕方ない!受け入れよう!あと0.8倍速で見よう!
細かいことはCakePHP超入門で説明されてるから、まずは全体像をつかむ。という意味ではドットインストールオススメだよ!全レッスンやるのに僕は色々調べながらやったら3,4時間くらいかかった!
ドットインストールでやったことに関しては、この記事読むとわかりやすいかも!
でも今はまだ読まなくてOK!テキスト1周してから読むと、「あーーーー!なるーー!」となるから未来の自分に期待しよう!
んで、ドットインストールで一通りCakeやれば、このテキストのChapter 1はほぼ見なくても大丈夫だよ!なのでChapter 1に関しては書くことない!はい次!
CakePHP超入門 Chapter 2で覚えておくべきこといろいろ
ここからはおふざけはなしだ。まずね、細かいことの前に作業の流れを分かっておいたほうが良い。
雑な流れ
最初にコントローラーにアクションを書く。アクションとはメソッド(関数)のことね。そして、それを表示させるためのViewファイルを書く。Viewというんだから見た目を表示するものだね。
もし、index( )というアクション(メソッド)を書いたら、それを表示させるためにはindex.ctpというviewのファイルが必要。
もしadd( )というアクション(メソッド)を書いたら、それを表示させるためにはadd.ctpというviewのファイルが必要。
この流れは意識しておくと、コントローラーにedit( )というアクションを書いたから、次はこれを表示するためにedit.ctpというviewファイルが必要だな!と分かるよ。分かるって楽しいね!
名前空間という空間
テキストに従って早速写経を始めたら、名前空間ってのに出くわすと思う。何だそれ?ってなるよね、困るよね。俺は困った。
でも、名前空間の役割を知るとこれは絶対なきゃダメだなって分かる。こういう自分には意味不な機能ってきっと先達が困ったから生み出したんだろうね。
なので、どんな問題があったからこの機能が産まれたんだろう。って考えると腹落ちしやすいと思うよ!ストン!(腹落ちする音)
名前空間に関してはこれを読むとストン!です。
オブジェクト指向とかあまり分からなって人(僕含む)は、上記の記事書いてる人が書いてくれたオブジェクト指向の記事読むとはかどります。
$this->set(変数名, 値); とは仲良くしておいたほうが良い
$this->set(変数名, 値);はめちゃくちゃ使う。コントローラーからViewに値を渡すのに必要なんだ。そして、このsetはテキストで絶対覚えろと書かれている。
だが、それを俺は怠った!結果として、このテキストを1周終えてもsetって何やってるのかよく分かんないなー。となっていた。
君にはそうなってほしくない!なので今一緒に覚えよう!
とは言ってもめっちゃ簡単!
$this->set(変数名, 値);は$this->set('title', 'Hello!');としたら、$title = Hello!と変数がセットされるってだけ。
変数名 is 値みたいな感じでセット出来るんだね。これは絶対覚えよう。なんならタトゥーで$this->set(変数名, 値);と彫ってもいいくらいのレベルでこれは使う。
elementメソッドともいい関係を築こう
エレメントってヘッダー、フッターをレイアウトから切り離して表示する時に使うのね。
書き方は element(パス, [連想配列])って感じ。
パスって何?って感じだよね、分かる。パスってheader, footerのことね。
テキストだとこんな風に書かれてるね。
<?=$this->element('header', ['subtitle' => 'cake php sample page']) ?>
これで、header.ctpのファイル内の$subtitleがcake php sample pageって表示されるよ!
これもさっきのsetと似てるね!
['subtitle' => 'cake php sample page'] は
$subtitle is 'cake php sample page' みたいな感じだね。
分かればめっちゃ簡単!けど、1周目って分かんないことのオンパレード過ぎて焦ってしまうけど、やってることはこれまでPHPとかWordPressをやってきたならChapter 2は全然理解するの難しくないと思う!
思ったより書くことがなかった
振り返ってみると、setとelementについてしか書いてないね!ほんとはもっと色々悩んでたんだけど、何に悩んでたか忘れた!喉元過ぎればなんとやらだね!
最後にテキストにあるChapter 2の「この章のまとめ」をレビューしてみよう!
コントローラーだけは使えるように!
コントローラークラスの作り方。アクションメソッドの書き方。はしっかり覚えろだって。
コントローラークラスの作り方はuseやclassを記述することだね!これは暗記より、都度テキストを見て書き方を覚えていけば良い気がする!気がするだけだけどね!
アクションメソッドの書き方は
public function アクション( ){ }
だね。これはやってくうちに何回も書くから覚えるとおもう!
ビューテンプレートと値の渡し方
これはsetを使うとこだね。ここは絶対理解したほうがいい!書き方を覚えるよりも、何をしているかをちゃんと理解すると良いのかなと思うよ!
フォームヘルパーによるフォームの利用
フォームは常にフォームヘルパーで作ると考えろ!だって。ここはまあフォーム書く際に書き方みればいいと思う!
絶対忘れちゃだめなこと
やっぱりコントローラーとビューテンプレートの基本的な使い方が大切。
コントローラークラスを作る→アクションメソッドを書く→ビューテンプレートを表示する。の一連の流れは、テキスト写経しながら常に意識すると良いと思うな!(2回目)
おわりに
コーヒーを2杯飲むとハイになって変なテンションの文章になったのできっと後で書き直すと思う。
個人的にテキストやる時に大切だなと思うのは
1. 1周目は最後までとにかく終わらせることを目的とする。細かいことは2,3周目の自分に期待する。
エラーが出るならサンプルコードをコピーしても良いと思う。全体像見えないのに細かいことにこだわるのは時間もったいないかなと思うよ!Time is precious dane!
2. 詰まったらまずは正誤表を見よう!
エラーは自分のせいじゃないこともあるよ!(たいてい自分のせい)
3. このテキスト分かりにくい、くそ。と思う前に自分を疑おう!
ここ大切だよ!ってテキストが書いてるところを見落としてない?
もしテキストの説明が分からなかったら、違うテキストやググって違う人の説明を読んでみると理解できることもあるよ!
こんなところ!全然いいまとめにならなかったけど、done is better than perfectだからOKだね!またね!