PHP
CakePHP

今月クリスマスだけど、一緒にケーキを食べてくれる人がいないからCakePHPについて記事を書いてみた

ユアマイスターアドベントカレンダー2018 の1日目の記事です。


馴れ初め

転職しWeb開発に関わり初めて、最初に出会ったのがPHPとCakePHPというフレームワークでした。Web技術の基礎はCakePHPに触れながら学んできたので、振り返りを兼ねて今回記事を書くことにしました。


CakePHPとは

CakePHPはオープンソースで作成されたPHPの高速開発フレームワークで、webアプリケーションを作る際に

基本となる骨組みを提供してくれます。


特徴


フォルダの構成

bin             -- 実行可能コマンド群

config -- 設定ファイル
logs -- ログ出力場所
plugins -- プラグインの格納場所
src -- 開発のソースコード(Controller、Model、Viewなど)
tests -- テストケース格納場所
tmp -- 一時的なデータの格納場所
vendor -- ライブラリーの格納場所
webroot -- 公開ディレクトリ


  • config

    DBの接続の情報などの設定ファイルを格納するディレクトリ

    最初の頃、どこでも呼べるから超便利だと思って、なんでもconfigに書いていた時期がありました。

    その結果、管理ができなくなって、configファイルの整理に苦しんでいます...

    苦い経験ですね…


  • src

    アプリケーションを開発する上で一番触れることが多いディレクトリ

    MVCモデルを意識しながら開発することがなかったので、この処理はコントローラに書くべきかモデルに

    書くべきか先輩エンジニアにレビューしてもらいながら開発を進めてました。

    もし、CakePHPを恋人と例えるならば、恋人繋ぎするための手ではないでしょうか(笑)


  • vendor

    ここはcomposerによってインストールされるライブラリーが格納されるディレクトリ

    基本的に編集することはなく触れる機会がありませんでしたが、ちょうど一週間前(11月末)に

    CakePHPのバージョンを3.5.13から3.6.13にバージョンアップし、その時に触れる機会がありました。

    composer installcomposer update について学べたり、いい経験になりました。

    弊社のブログに記事があるので、興味ある方は下のリンクから

    http://yourmystar-engineer.hatenablog.jp/entry/2018/11/27/231820



リクエストされる順番

クライアントからサーバーへリクエストの流れ

1. index.phpにアクセスして、リクエストを制御する

2. リクエストのルーティング情報でコントローラとアクションを呼ぶ

3. コントローラからモデルとコンポーネントとやりとりを行う

4. コントローラから出力結果をビューに渡す

5. ビューがボディーとヘッダーを生成して、レスポンスを返す

IMG_2419.JPG


MVC

モデル(M)、ビュー(V)、コントローラ(C)に役割分担させて開発していくモデル

IMG_2420.JPG


コントローラ

MVCのCの部分。

ルーティング情報から適切なコントローラが見つけられ、アクションが呼ばれる。

コントローラはリクエストを解釈して、モデルと通信して、ビューを書き出す。

モデルとビューの架け橋となる役割をしてくれる。

肥大化しがちなので、できるだけシンプルにすることを意識すること。


モデル

MVCのMの部分。

データベースに対する操作だったり、ビジネスロジックを記載するところ。

プログラムを初めた頃はピンと来なかったので、コントローラとビュー以外を書くところだと覚えていました。


ビュー

MVCのVの部分。

リクエストに対して、出力を生成する役割を担ってくれる。


まとめ

今回簡単に自分が使っているフレームワークについて記事にしてみました。

毎日触れているものですが、いざ文字にするとわからないことだらけ…

最近、他の言語やフレームワークに浮気したいと思う気持ちがあったりしますが、

もっとCakePHPのこと知って、共に歩んでいこうと思います。