2014年4月28日月曜日

cakephpとruby on railsの比較

最近、僕がウェブ関連で使うメインの言語がRubyからPHPにかわりました。
理由は、Ruby(ruby on rails)で作ったものは、手離れ(つまり、自分が作ったもののメンテナンスや運用を自分でやらないこと)が難しいことが多いからです。

どうしても、運用の細かなノウハウみたいなものが必要になることが多いruby on railsに比べて、とりあえず、パッケージからApacheをインストールしたらデフォルトで使えたり、ほとんどのレンタルサーバーで普通にサポートしてくれていたり、というPHPは、自分が将来も運用に関わりたいというわけでないプロジェクトには便利です。

フレームワークは、これまでRails使ってたんですが、今は、フレームワークも使ってません。

でも、なんかフレームワーク使ったら便利かもな、と思って、最近、CakePHP勉強しようと思い立ちました。

で、なんとなくCakePHPって、Railsに似た、PHP版のRailsみたいなもんだと思っていたんですが、ずいぶんちがうんですね。

以下は、Railsに頭が慣れた僕が、現在、CakePHPにびっくりしているところです。

1,controllerでGETメソッドとPOSTメソッドで分岐したりすることがある。
Rails的には、普通は、URLやリクエストのメソッドから、controllerのメソッドにマップするのは、routingの仕事です。controllerは、modelを操作して、viewを表示するだけです。ところが、CakePHPでは、controllerのメソッドの中に、HTTPメソッドごとに分岐するようなコードを書いてあるサンプルが時々あるようです。routingでメソッドごとに分岐させることができるのかできないのかは、まだ調べていません。もし、routingでメソッドごとに分岐することができるのにそうしないんだとしたら、CakePHPの仕様というよりも、PHPの人のコーディングの習慣ってことになるんでしょうね。routingみたいなことまでcontrollerに書いちゃうと、少々fatなcontrollerになっちゃいませんかね。

2,modelは、オブジェクトじゃなくて、配列である。
いや、モデルオブジェクトってのはあるんですが、とにかく、配列で返ってくるってのがびっくりしました。

3,URLがRESTじゃない。
これも、どっちかというと習慣ですね。railsの世界では、URLは、RESTfulにするのが普通なんですけれど、こっちでは、あんまりそういうところにこだわらないコードが多いみたい。

これなら、あんまり複雑なことしないなら、別にフレームワーク使わなくても、プレーンなPHPで書けばいいじゃんって気がします。

0 件のコメント:

コメントを投稿