2014年3月25日火曜日

2014年、PHPフレームワーク雑感(CakePHP, FuelPHP, Yii, ZendFramework)

まとめると、中規模開発以上はYii、ミニサービスやスモールスタートならCakePHPが良いかなと思う。

CakePHPが良いのはやはり学習コストが低い点。お膳立てが多いので欲しいなと思ったものはだいたいある。まだ安定版出てないけどこれからは3.xでいいと思う。

CakePHP(2.x)

公式ドキュメントを参照するだけでほとんど迷うこと無く開発を進めることが出来る。導入のしやすさはピカイチ。ただし細かいことしようとするとブラックボックスな配列の取り回しに苦労する。とにかく配列が深い、引数が多い、謎、ストレス。
個人的に気になったところは、
・autoload:ディレクトリパス指定とかで自動で読み込んで欲しい。
・ORM:2.xでは推奨されておらず謎のストレスフルな配列結果セットを使うことになる。3.xでは改善されそう。
・マジックメソッド多用:コード補完が効かなくてつらい。

FuelPHP(1.x)

CakePHPに比べてお膳立てが少ないので自分であれこれ付け加える必要がある。ディレクトリ構成がモヤッとする。fuel/app/classesとか。導入はCakePHPについで楽だしFuelとかoilとかforgeとかなんかかっこいいけど、CakePHPを超えるメリットはあらかじめ環境切り分け(Production, Develop / DB master, slave)が考慮されているところくらいしか思いつかなかった。ORMのテーブル情報をキャッシュしてくれないところも微妙な点。

Yii(1.1.x)

日本では人気無いけど英語圏では人気のFWなので情報が豊富。ディレクトリ構成がわかりやすくて、Viewのコンポーネントも充実してる。CakeやFuelよりは導入コストがかかるが、Zendよりは導入しやすい。

Zend(2.x)

1.xから大きく変わり、色々煩雑になってしまった印象。全体的にお固くて設定の配列が冗長、ディレクトリ構造もわかりづらい。FW自体開発者の利便性よりもオブジェクト指向優先でクラスは細かく細分化されている。学習コストは高いが、その分一度慣れると収まるものが収まるところに収まってるので使いやすく感じる。Zend_Formはとても良い。

まとめ2

ORMは信用しない方が良い。単純な取得や単体での保存では使うが、複雑な条件での取得・トランザクションはモデル内のメソッドとして自前で実装したほうが良い。特にリレーション設定(hasOne, hasMany等)は使わない。
SELECTもController側でmodel->select()->where()みたいなことせずに、それぞれ該当モデルにてメソッド化する方が後から見た時にわかりやすい。

各FWともPSRとか出てきてここ2年くらいで刷新したバージョンを出してる(出そうとしてる)けど、その中だとやはりCakePHP-3.xとYii-2.x系が良さそうだなと思う。
他のフレームワークで注視しとくのはLaravelくらいか。