FuelPHP で CodeIgniter のコードをなるべくそのまま動かす FuelIgniter

CodeIgniter のコードを FuelPHP に移行するとき、どうやったらいいかと考えていてひらめいたのが、なるべくそのまま動かしてみようということでした。名付けて FuelIgniter! (笑)

CodeIgniter 2.1.0 のユーザガイドにあるチュートリアルが動作するようになりましたので、公開します。

以下は CodeIgniter で記述したコントローラのソースです。

<?php

class News extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
		$this->load->model('news_model');
	}

	public function index()
	{
		$data['news'] = $this->news_model->get_news();
		$data['title'] = 'News archive';
		
		$this->load->view('templates/header', $data);
		$this->load->view('news/index', $data);
		$this->load->view('templates/footer');
	}
	
	public function view($slug)
	{
		$data['news_item'] = $this->news_model->get_news($slug);
	
		if (empty($data['news_item']))
		{
			show_404();
		}
	
		$data['title'] = $data['news_item']['title'];
	
		$this->load->view('templates/header', $data);
		$this->load->view('news/view', $data);
		$this->load->view('templates/footer');
	}
	
	public function create()
	{
		$this->load->helper('form');
		$this->load->library('form_validation');
	
		$data['title'] = 'Create a news item';
	
		$this->form_validation->set_rules('title', 'Title', 'required');
		$this->form_validation->set_rules('text', 'text', 'required');
	
		if ($this->form_validation->run() === FALSE)
		{
			$this->load->view('templates/header', $data);
			$this->load->view('news/create');
			$this->load->view('templates/footer');
		}
		else
		{
			$this->news_model->set_news();
			$this->load->view('news/success');
		}
	}
}

これを FuelIgniter に移植すると、以下のようになります。

<?php

class Controller_News extends CI_Controller {

	public function before()
	{
		parent::before();
		$this->load->model('news_model');
	}

	public function action_index()
	{
		$data['news'] = $this->news_model->get_news();
		$data['title'] = 'News archive';
		
		$this->load->view('templates/header', $data);
		$this->load->view('news/index', $data);
		$this->load->view('templates/footer');
	}
	
	public function action_view($slug)
	{
		$data['news_item'] = $this->news_model->get_news($slug);
		
		if (empty($data['news_item']))
		{
			show_404();
		}
	
		$data['title'] = $data['news_item']['title'];
	
		$this->load->view('templates/header', $data);
		$this->load->view('news/view', $data);
		$this->load->view('templates/footer');
	}
	
	public function action_create()
	{
		$this->load->helper('form');
		$this->load->library('form_validation');
	
		$data['title'] = 'Create a news item';
	
		$this->form_validation->set_rules('title', 'Title', 'required');
		$this->form_validation->set_rules('text', 'text', 'required');
	
		if ($this->form_validation->run() === FALSE)
		{
			$this->load->view('templates/header', $data);
			$this->load->view('news/create');
			$this->load->view('templates/footer');
		}
		else
		{
			$this->news_model->set_news();
			$this->load->view('news/success');
		}
	}
}

ほとんど同じです。これなら、まだ FuelPHP になれていない人もまったく問題ありません (笑)

ソースコードは以下で公開しています。

なお、FuelIgninter では、まだ上記のチュートリアルくらいしか動作しませんので、ご利用の際は自分で FuelIgniter を拡張してください (w