使ってみた。

今日、仕事でちょっと使ってみた。
ログイン機能と、簡単な画面を作るなかで、
Cakeとくらべてどうかというのがおぼろげながら見えてきたので、
覚え書き程度に書いておこうと思う。


まず、コントローラ周りから。
(これはコントローラ以前の話かもしれないが)基本的に、どちらもmod_rewriteを使い、
http://domain.com/コントローラ名/アクション名
という。直感的なURL表記ができる。
が、cakeとちがい、それ以外の表現も出来るようで、
Zendではindex.phpが最初無い。自分で設定しろってことだね。
そのときに設定するRouterの設定次第というなんともうれしいようなうれしくないような
面倒としか言えない拡張性がある。


次、今度はコントローラ。
Zendは対応をPHP5にしぼっているだけあって、
存在しないActionを叩くようなURL指定の場合にどう処理するかなどがかける。
cakeは4もしっかり対応しているので、そのへんの機能が薄い。(そんなに使う機能では無いけど)
cakeでは、全てのActionの共通処理は、app_controller.phpに書けばいいんだけど、
Zendではそれにあたるクラス(共通のスーパークラス)が存在しない。
いろいろと調べた結果、pluginという形でそういう処理を行うようだ。
詳しくは書かないが、これを活用することで、cakeと同じ事は可能。
オブジェクト指向的にはZendの方が良い設計なんだろうな。 面倒だけど


次、view。
これはどちらもさほど変わらない。
Zendの方がオブジェクトチックに扱える程度。
ただ、Zendは生のformを使えるのでそのへんは便利かも。


あと、これはなんかしらの対応策があるかもしれないけど、
AAAController::indexActionを呼ぶときに、
URLは次の2パターンになる。
http://domain.com/aaa
http://domain.com/aaa/index


このとき、formのactionは(同コントローラのexecに飛ばすとしよう)
action="aaa/exec"
action="exec"
とそれぞれなり、なんらかの置換処理が必要になる。(もしくはフルパス指定)

cakeでは、$html->url()で対応できるが、Zendだとどうにもならなかった。
こういう状態になるときはindexは使うなと言うことだろうか・・・・


Dbについては、今プロジェクトが使わない方針なので、使っていない。
他、Zendで気になった点は、require書くのが面倒。
共通で使うクラスはどこに置けばいいのか?などちょっと気になった。


Zendはライブラリが大量になるので、その辺は使い勝手が良さそうだが、
RegistoryとSessionはどっちかあれば事足りるような・・・
Registoryはどんなときに使うんだろうか?


はっきり言ってしまえば、
cakeは開発者がやりやすいよう、実際書くコード量が少なくて済むように作られている気がする。
なので、ほぼ使わないような拡張は一切ないし、設定レスが目立つ。

Zendは汎用性がありまくる。それのせいでちょっと使い勝手が悪い部分がある。
一般的な開発者がフィードバックを受けて作っている感じはあまりしない。
オブジェクト指向バリバリだぜーってのは分かるけど、ちょっと行き過ぎで(オブジェクト指向について)完璧を目指しすぎだと言わざるを得ない。


どこかでみたが、電気自動車はクリーンで二酸化炭素は出ないわですげーぜ!
って言ってはみたものの、まったく売れず、
結局、ハイブリッドカーというどっちつかずのものにして売れるモノになった。


CakeがハイブリッドでZendが電気自動車のように見えてしょうがない。
これからの動向を見つつ、Zendも毛嫌いせずにもうちょっと使ってみようと思う。