CakePHPerからみたLaravel

はじめに

業務に CakePHP を使っていたのですが、最近 Laravel を触り始めました。

CakePHP と Laravel の比較ができればと思いまとめてみました。

なお、比較は CakePHP 3.5 と Laravel 5.7 でしています。

CakePHP でいう bake はどうなの?

  • データベースのテーブルからモデルを作るのはデフォルトでは採用されていないっぽい

  • view を作る artisan はないらしい

github.com

  • PhpStorm が Blade がデフォルトでは効かない

plugins.jetbrains.com

artisan

prefix はないっぽい

Eloquent

  • has many リレーションで through をサポートしているっぽい(CakePHP は確か belongsToMany でしか使えない)
  • アソシエーションを保存するときはトランザクションを自前で書かないといけない

-> CakePHP は saveAll() で内部的にトランザクションをしてくれたはず

Valiation

unique は data のアップデートでも弾く

Storage

Flysystem(ファイルを抽象化して扱えるライブラリ)がデフォルトで組み込まれており、便利

デザイン

  • Bootstrap がデフォルトで入っている

バリデーション

  • Controller でやるっぽい(FormRequest を拡張するのが良さそう)

ルーティング

自前でかかないといけない

Laravel 自前で書かないといけない(/:controller/:action という記法でかける Cake のほうが特殊だと思う)だけあって、 php artistan route:list したときの URL がきれい

Routing にそのまま view を渡せる

CakePHP だと、PagesController などに渡さないといけない(もしかしたらできるのかも)

ビュー

  • Theme っぽいのはない?

  • Formヘルパー的なのはデフォルトでは含まれていないようだ

こちらでメンテナンスされているっぽい

github.com

github.com

FlashHelper

Laravel は自前で書かないといけない

テスト

単体テスト、アプリケーションテスト、ブラウザテストというのがあるらしい 大きく分けて、

Dusk

Dusk でブラウザのテストができるっぽい

laravel.com

入れたデータは自動では消してくれないっぽい

IDE

PhpStorm

plugins.jetbrains.com

まとめにならないまとめ

Laravel

  • 開発環境は整えやすい(Homestead)
  • Storage がいい感じ
  • AWS のサポートが手厚そう(Storage::disk('s3')とか)
  • Duskテスト便利
  • 自由度高いけど、どこまで案件で必要になるのか。。。
  • 各ライブラリが GitHub のスター数が多いのがよくわからない(それだけ汎用的なのか???)
  • ゴリゴリ書きたい人向けか?
  • PHP でスタートアップとか便利そう
  • パッケージ管理システムに良さそう
  • テストがないときつい
  • Middleware がいい感じ

CakePHP

  • 開発は早い(bake がすごい)
  • ドキュメント充実
  • オールインワン(Number とかでファイルサイズを読みやすい形式にしてくれるやつ便利)
  • CakePHP 3 は自由度高いよ!