PHPフレームワーク私的で感覚的な比較

比較するPHPフレームワーク

追記

  • codeigniterのライセンス元を追記 & ライセンスを詳しく調べていただいる方がいるのでそちらへリンク追加しました。

FuelPHP1.6, CodeIgniter2.0, CakePHP2.3のコントローラ部分と、DBへのクエリ部分を比較するためにとりあえず並べてみました。

cake-logo

ci_logo_flame

drops



Controller

FuelPHP

class Controller_Example extends Controller
{
    public function action_index()
    {
        $data['css'] = Asset::css(array('reset.css','960.css','main.css'));
        return Response::forge(View::forge('welcome/index'));
    }
}

CodeIgniter

class Example extends CI_Controller
{
    public function index()
    {
        $this->load->view('index');

        return true;
    }
}

CakePHP

class ExampleController extends AppController
{
    public function index()
    {
        // /View/Example/index.ctpのビューが自動的に描画
    }
}

Select文

SELECT * FROM mytable WHRERE id = 1


FuelPHP

\DB::select('*')->from('mytable')->where('id', '=', 1);

CodeIgniter

$this->db->get_where('mytable', array('id' => 1));

CakePHP

$this->Mytables->find('all', array(
    'conditions' => array('Mytables.id' => 1)
));

私的で感覚的なフレームワークの特徴

FuelPHP

  • MongoDB, Redisなどをサポート
  • Model, Viewの呼出し方が柔軟
  • 小規模〜大規模まで幅広く対応
  • ディレクトリ構造が深くて行ったり来たりがめんどう
  • なんかてにしっくり来るようで一押し

CodeIgniter

CakePHP

  • 命名規則がしっかりしている(ファイル名、コントローラ名….)
  • コントローラ名 ≒ Model名 ≒ DB table名
  • 命名さえ気をつければ特に何もしなくても開発できる
  • コントローラの中身が作りやすい
    • なんでもコントローラにかけちゃう
    • コントローラの柔軟性が高い
    • コントローラが肥大化する傾向
  • View部分が理解しやすい構造
    • Views/element (ex. 共通メニュー)
    • Layout/default.ctp (ex. テンプレート大本)
  • 中規模程度だとちょうどいいかも

その他にも毛色が違うYiiとPhalconが気になっているのでそのうちなんとかしたいなぁ。