supermannerの落書き

基礎からおさらい。おさらいが何よりも大事なのです。ふわっとした知識、撲滅!

1年でLaravelとCakePHP3を使った話

この記事はdots.女子部 Advent Calendar 201622日目の記事です。

業務でたまたまこの1年は上記の2つをよく使ってきた(前半Laravel/ココ最近Cake3)ので、それぞれのメリットデメリット、イイなと思う点等を比較してお送りしていきたいと思います。

githubのスター数

https://github.com/cakephp/cakephp https://github.com/laravel/laravel

圧倒的Laravelですね!さすが今一番乗ってる(?)と言われてるPHPフレームワークです 勉強会等でもLaravelは積極的に取り上げられている他, twitter界隈でも優しい感じの偉い人が多いイメージが有りますね。

Laravel

好きな点

では次に個人的にイイと思うLaravelの利点を紹介していきたいと思います。

ViewComposer

viewComposerの詳しいドキュメントはコチラ

何がイイかというとViewロジックをごっそり分離できる点です。 どのtemplateにどの情報を紐付けるか、やUAでのだしわけ等もこちらのcomposerを使えばスッキリ書くことが出来ます。

MiddlewareとServiceProvider

Middlewareを作成してServiceProviderに登録し使用するという手法はさまざまなフレームワークでも取り入れられているしそうですが、とりわけLaravelはスッキリ完結でわかりやすいコード体系なのではないかと思います。だいぶ前に書いた記事がまさにそうですが、簡単かつ直感的に共通コードを抜き出せるのは, 大きいと思います。

うーんな点

Repositoryパターン

https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/ ココで結構詳しく書いてくれています。 共通して使うModel寄りビジネスロジックは注入して使うのがスタンダードな模様なのですが、 EntityとTable系のつながりが見えづらいかな?と思いました。後述しますがCakeはこの辺が直感的でわかりやすいです。

CakePHP3について

Cake歴はまだそんなにないのですが、1ヶ月ほどつかってみて良いなと思った点をあげます

好きな点

Hashが素晴らしい

CakeのHashクラスは相当強力です。ナマで書くと相当な行数になってしまうようなループも、このHash関数で一発できれいに記載できます http://api.cakephp.org/3.3/class-Cake.Utility.Hash.html

ORMの挙動がわかりやすい

これは好き好きあると思うのですが、自分はCake3のORMは割と好きです。 Modelとしては1Entityを扱い, TableRegistoryはtable全体に対して働くのが直感的

うーんな点

共通コンポーネント

ComponentとBehaviorはまだつっこんで使っていないのですが、Laravelのほうがきれいな階層としてかけそうな気がする。。

RequestParamsに対するValidatorがいない

Laravelで言うところのvalidator::makeで作成するあいつがいません。 Cakeはsave時にEntityに対してvalidationが働き、もしinvalidな値であればfalseを返す、というような挙動をとります。 すぐに検知したいタイプの私としては, とっても気持ち悪いです。。。。

両方使ってみて

つきなみな言葉ですが、一長一短ではあります。 ただ、自分はシンプルと直感的、またコアコードが読みやすいというのをかんがみてLaravelのほうがすきだな、と思いました。 とは言えCakeも3になって私のしっているCakeとは大きく変わっていたのでこれからが楽しみです。