## CakePHP3のチュートリアル
コードを書き写して動かしてみて面白かった。全然コード書いてないのに色々動いててびびる。
## コード
docker-composeにmysqlの設定と初期化SQLを入れといたから、たぶん、docker-compose up
してcomposer install
してlocalhost:8000
にアクセスしたら動くんちゃうかな。
以下、学んだことのメモ。
## Articlesまわり
### Model
Modelの中にTableとEntityがあって、役割の違いは何だろう?と思ったら、こういうことみたい。
- Table: DBのテーブルにアクセスするためのもの
- Entity: DBのレコードを表すもの
### ArticlesTable
- Tableを継承
- 名前でDBテーブルと紐付けられる
- 初期化時にBehaviorを追加することでテーブルの操作に対する振る舞いを追加できる
### (Entity) Article
- Entityを継承
- 名前でテーブルと紐付けられてる
- 一括代入用の設定をしてる
### ArticlesController
- AppControllerを継承
loadComponent
でロードしたコンポーネントが$this->Paginator
みたいにして利用できるようになるみたい- Tableクラスには
$this->Articles->find()
みたいにアクセスしてるけど、デフォルトでArticles(Table)と紐付けられてるってことなんだろうな $this->set()
でViewにデータを渡してるcompact()
は何だろう?と思って見てみた。なるほどー。
へー!
— Mitsuyuki Shiiba (@bufferings) 2018年9月23日
CakePHP compact使おうぜ - Code Life https://t.co/nvkKx5PZfj @__notoさんから
### (Template) index.ctp
- テンプレートファイルは、名前の規約でコントローラーのクラス名とメソッド名から引っ張ってくる
slug
ってどういう意味なんだろう?と思って見てみた。なるほどー。
へー / “ソフトウェアの世界での slug / スラグ / スラッグの意味 - valid,invalid” https://t.co/NLSYvrLNJP
— Mitsuyuki Shiiba (@bufferings) 2018年9月22日
- テンプレートにはHelperがあって便利メソッドを提供
- Htmlヘルパーのlink生成
DATE_RFC850
はdefineされてたdefine ('DATE_RFC850', "l, d-M-y H:i:s T");
### ArticlesControllerのviewアクション
findBySlug
は動的ファインダーか- パスパラメーターが引数で渡されてる
- Flashは一旦セッションに保存されて利用されると消えるやつか
__()
はi18n対応したメッセージ表示用の関数h()
はXSS対策用のエスケープ- Formヘルパーでフォーム周りを生成。バリデーションが設定されてる場合はそれも反映されるっぽい
- そのバリデーションはこんなの
- TableのbeforeSaveで保存前に実行したい処理を書ける
- へー。slugを生成するためのユーティリティがあるんだ
- FormヘルパーのPostLink生成。JS使ってPostするっぽい
## 前半のメモはこれくらい
感想は
- 規約
- 規約に従ってやってたら色々裏側でいい感じにしてくれるので便利
- なんだけど、裏側で何をしてるのかを把握しとかなきゃ想定外の穴があきそうで怖い
- PhpStorm
- ドキュメント
- を読むためのとっかかりのインデックスが自分の中にできてきたので良かった
後半は、また気が向いたら書こう。
## (おまけ)IDEAのショートカット
コピペじゃなくて実際に見ながら書いてた理由は、PhpStormで書く感触を知りたかったからで。1個覚えた。
- 「あとは分かるやろ」って思ったときに
Ctrl + Shift + Enter
を叩くといい感じにしてくれる
あとは、IdeaVimを入れてできるだけ矢印キーを使わずに頑張ってみた。まだ慣れない。