0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

##この記事に書いてあること
・ドットインストールのCakePHP3レッスン(最終更新2015年)について
・2021年に今更上記レッスンで勉強した感想
・CakePHPの仕様変更などで詰まった(レッスン通りに行かなかった)ところ
・詰まったところの解消方法
などなど
##今更でもCakePHP
PHPやるならLaravelが王道の世の中。
時代に逆行?してBaking Cakeといきます。

筆者のPHP経歴はWordpressのみ。
つまり無いに等しいけど基本文法くらいはわかるレベル。

こんなので美味しいケーキができるのかしら??

##初学者は黙ってドットインストール()
CakePHPの勉強を始めるにあたって、
まずどの媒体を選ぶかという問題にぶつかりました。
本、公式チュートリアル、ネットの記事、etc...

CakePHPは歴史が長いようで色々と選択肢はありましたが、
正直どれも情報が古く、本も最近の改訂版はなさそう。

(そもそもCakePHPのサポートが終了しているのでそりゃそうか)

数千円する本を買ってコードが動かない時、
自分で解消する力があればよいのですが、初学者はそうはいかないもの。

公式チュートリアルを勧める方もいるけど、
あれ、ド初心者には正直何書いてるかわかんないって。

まずは手軽にドットインストールでいいでしょう。
##筆者の開発環境

項目 情報
OS macOS
パッケージ管理 Homebrew 3.3.6

#01 CakePHPを使ってみよう

・CakePHPとは
・開発環境の確認
・intl拡張の確認
・ipアドレスの確認

###詰まったポイント
####intl拡張が入ってない
レッスンではintl拡張が使えるか確認する際にyumを使用します。

yum list | grep intl

(筆者はそもそもyumは使っていないのでnot foundになりましたが。)

そもそも、調べると、intl拡張はPHP5.3.0以降、同梱されているとのこと。
https://www.php.net/manual/ja/intl.installation.php

phpコマンドは使えるのに入ってないのはなぜ。。。となりましたが、
macデフォルトのPHPではintl拡張が入ってないらしい。

brewでPHPを入れなおしましょ。

brew install php@7.4

これでおk。
パスを通すなどは割愛。

####ipコマンド使えない
macではifconfigipに相当するコマンドのようなので、

ifconfig en0

で出てきました。

#02 設計の特徴を理解しておこう

CakePHPの設計の特徴について
・MVCモデル
・CoC ... Convention over Configuration(設定よりも規約)

今は深く掘り下げずにサラッと流しましたが、理解は必須ですね。

#03 データベースの設定をしていこう

・MySQLの設定
・SQLの実行
###詰まったポイント
####mysqlが入っていない
一番わかり易いのはいつだってprogate。
https://prog-8.com/docs/mysql-env

こちらもbrewで入れていますね。
progateのドキュメントどおりに進めればOK

#04 CakePHPをインストールしよう

Composerを使ったCakePHPをインストールについて
・Composerのインストール
・CakePHPのインストール
・ブラウザでの確認
###詰まったポイント
####composerのインストールもbrewでいいよね
レッスンではComposer公式サイトに記載のcurlで導入していましたが、
こちらもbrewで良いでしょう。

brew install composer

composer導入後はCakePHPのプロジェクトを作成し、
ブラウザでwelcome to CakePHPを確認。

#05 アプリケーションの設定をしていこう

・cakePHPの初期設定
・bakeコマンド
###詰まったポイント

config/app.phpを変更してもデータベースに接続できない

config/app.phpのDatasourcesに先のレッスンで作成したデータベースの情報を記載していくのですが、
いくら変更しても
CakePHP is able to connect to the database.と表示されません。

そこで調べたところ、app.phpではなく、
同じディレクトリにあるapp_local.php
というファイルの記述を変更しなければいけないようでした。

configディレクトリをよく見てみると似た名前ファイルが3つありますが、

app.php #以降 app と呼ぶ
app_local.example.php
app_local.php #以降 app_local 呼ぶ

CakePHP3まではapp以外のファイルはなかったようで、
appだけで設定を行っていたらしいです。

(ドットインストールのレッスンはCakePHP3なので違った)

この点について詳しくはこちらのサイトを参考にしましたmm
CakePHP4のapp_local.phpを掘り下げてみる

app_local.phpの仕組み
config/app.phpを読み込んだ後、config/app_local.phpが存在すれば追加読み込みをするという仕組みになっています。

app_localを開いて見ると、
appと同じような内容が記述されており、
レッスン通りappを編集してもapp_localでの同箇所の設定が優先され、
編集は反映されないということですね。。
(優先なのか上書きなのか気になるところ)

###レッスン最後でbake!
05のレッスンの最後ではデータベースの情報をもとにbakeし、コードを自動生成!!

bin/cake bake all databasename

筆者はこれメチャクチャ感動しました!!!!

UIもだけど投稿機能まで自動で焼き上がってる!まじか!!
スゲーーーー!!!!(大興奮)

##ドットインストール無料版はここまで
筆者がCakePHPで盛り上がってきたところですが、
#06からはプレミアム会員にならねば観れません。
これから課金し、引き続き学習予定です!

続きは次の記事に書くことにします。
ではではノシ

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?