Home >PHPにおけるRailsの考え方の適用

PHPにおけるRailsの考え方の適用

  • 2005-08-26 (金)

先日、Ruby on Rails のPHP版であるCakePHPについて触れました。触れたといっても、そういうのがある、という程度でしたが。せっかくなので、PHPにおけるRailsの考え方の適用について、少しばかり考えてみました。

RailsはMVCに基づいたフレームワークということで、Modelを担当するActiveRecordと、ControlとViewを担当するActionPackというふたつのライブラリで構成されています。Rails自体の特徴はその他にも多くありますが、今回はこの2つに部分についてCakePHPでの実装を基にPHPに適用した際の有用性について考えてみました。

まず、ActionPackというかControllerの部分についてですが、PHPの場合、ページと.phpファイルが1対1対応しているのが直感的で分かりやすいので、Controllerのクラスに各ページに対応したメソッドを作るのは何か無駄なような気がします(CakePHPでの実装例)。そんなことせずに単純に1ページ1ファイルで実装する今まで通りのやり方でよいんじゃないかと思う今日この頃です。

次に、Modelを担当するActiveRecordという部分についてです。これはDRY(Don't Repeat Yourself:繰り返しを避ける)原則に従った考え方だそうで、データベースのテーブルとクラスが1対1対応していて、テーブル定義が変更されると自動的にクラスにも反映されるというものです。テーブル定義が変更されると、いちいちクラスの実装も変更しなきゃいけない、ということがなくなるそうです。この考え方については非常に賛成です。

でも、実はPHPとMySQLの組み合わせだと(というか僕自身が他のデータベースにアクセスするPHPの関数はあまり使用したことがないだけですが)ActiveRecordと同様のことを簡単に実現できます。mysql_fetch_assoc() という関数を使用すれば、データベースに対してクエリーを発行する際に "SELECT * FROM テーブル名" としておけば、テーブル定義が変更されても、カラム名と値の組み合わせが連想配列に入ってくれるので、レコード値の格納先を連想配列にしておけば、クラスの実装を変更しなきゃいけない、という自体には遭遇しないで済みそうです。

ということで、ActiveRecord と ActionPackについてはPHPではう~ん。。。といったところでしょうか。

また、機会があればその他の特徴について考えてみたいと思います。

Home > PHPにおけるRailsの考え方の適用

Search
Feeds

Page Top