FuelPHPとRuby on Railsを比較してみます
前提
どちらのフレームワークも深く把握しているわけではなく、
これから双方を理解しておく必要があるので、整理する必要があり、
ついでにこの記事を作成しています。
FulePHPが1.8ではないのは、私が関わる案件のFuelPHPが1.7だからです。
アーキテクチャ
FuelPHP
FuelPHPはModel,View,Controller+Presenter。
モデル、ビュー、コントローラ (MVC) - FuelPHP Official
app ┣classes ┃ ┣model ┃ ┣controller ┃ ┗presenter ┗views
Rails
RailsはModel,View,Controller。
Rails をはじめよう - RailsGuides
app ┣models ┣controllers ┗views
設定・規約の設計理念
FuelPHP
規約より設定。
アプリケーション設定 - FuelPHP Official
Rails
設定より規約が優先される (Convention Over Configuration)。
Railsとは何か - Rails をはじめよう - RailsGuides
複数環境設定
FuelPHP
app ┣config ┃ ┣development ┃ ┣staging ┃ ┣test ┃ ┗production ┗config.php
Rails
config ┣environment ┃ ┣development.rb ┃ ┣test.rb ┃ ┗production.rb ┗application.php
Rails アプリケーションを設定する - Rails をはじめよう - RailsGuides
ORM
FuelPHP
Active Record パターンに従っています。
実際に利用する際はOrm\Model
を継承します。
DBのカラム名は省略することが可能ですが、$_properties
に明示的に設定することを推奨されています。
class Model_Person extends Orm\Model { protected static $_properties = array('id', 'name', 'age'); }
Rails
Active Record パターンに従っています。
ActiveRecord::Baseを継承します。
CoC(Convention over Configuration)に基づいて設計されており、
規約に従っていれば、利用時に設定のために必要なコードが最小限になっています。
カラム名は特に指定する必要がなく、自動的にカラム名をもとにした
インスタンス変数へのアクセサが定義されます。
class Person < ActiveRecord::Base end p = Product.new p.name = "Hogebayashi" puts p.name # "Hogebayashi"
Active Record の基礎 - RailsGuides
Model
FuelPHP
Modelを利用する際は、Model_
プリフィックスを付ける。
// ORMを利用する場合は、Orm\Modelを継承する class Model_Person extends \Model { public static function some_method() { // DB処理 } }
Rails
ORMを利用するモデルについてはORMの項目で触れたとおりActiveRecord::Baseを継承します。
Active Record の基礎 - RailsGuides
ORMを利用しないモデルについてはActive Modelを利用します。
Active Model の基礎 - RailsGuides
View
FuelPHP
app/views
に配置する。
<html> <head> <title><?php echo $title; ?></title> </head> <body> Hoge, <?php echo $username; ?>. </body> </html>
Rails
app/views
に配置する。
<html> <head> <title>タイトル</title> </head> <body> Hoge, <%= person.name %> </body> </html>
Controller
FuelPHP
app/classes/controller
に配置する。
Rails
app/controllers
に配置する。
Action Controller の概要 - RailsGuides
CLI
FuelPHP
Oilを利用。
FuelにOilですね。・・・うん、世界観。
Oilには以下のような機能があります。
Type | Memo |
---|---|
Generate | 各種コード生成 |
Refine | マイグレーションやタスクの実行 |
Package | パッケージのインストール・更新・削除 |
Console | 対話コンソールでFuelPHPを動かす |
Test | テストを実行 |
Oil ユーティリティ - FuelPHP Official
Rails
rails, rakeを利用。
railsコマンドの機能には以下のようなものがある。
- プロジェクトテンプレートの生成
- ソースコードテンプレートの生成
- サーバーの起動
- コマンドラインでRailsアプリケーションを操作可能なコンソールの起動
- コマンドラインでDBを操作可能なDBコンソールの起動
Railsが提供するrakeタスクの機能には以下のようなものがある。
Rails のコマンドラインツール - RailsGuides
テスト
FuelPHP
PHPUnitによるテストを念頭においている。