Hatena::ブログ(Diary)

あさdev RSSフィード

2011-02-04

CodeIgniterを5分で導入、「Hello World」を表示するまで

ページが見つかりませんでした | H2O Blog. | Page 195

珍しくCodeIgniter扱った記事がホッテントリなってたので触発されてエントリーを書く事にした。

CodeIgniterの何と言ってもいいところはその生産効率です。どのフレームワークよりも早くWebサイトを作ることができます。よく「CodeIgniterは速い」とか言われますが、速度なんてあまり関係ないです。フレームワークは「速いから」なんていう理由で選ぶもんじゃないです。「速いならCodeIgniterにしようか!」なんて理由でCodeIgniter使う人はフレームワーク使わないでいいんじゃないかな。

まぁこの話はいいとして、CodeIgniterは導入含め最初のページ作るまでに5分あれば十分です。説明するまでもない内容ですが、簡単に手順を。

サーバー等の設定は済んでいるものとして説明します。

Windows環境での説明です(^q^)

まずはCodeIgniter本体をダウンロード

CodeIgniter - Open source PHP web application frameworkアクセスしてDownloadsから最新安定版のCodeIgniterをダウンロードします。

f:id:atomer:20110204213334p:image

あ!2.0出てる!

僕もまだ全然触ってないですが、とりあえず2.0.0を落とします。

CodeIgniterを配置

CodeIgniterに煩わしいインストール作業はありません。ダウンロードして解凍して出てきたフォルダをそのまま配置するだけです。僕の環境ではD:\www\がドキュメントルートになってるのでここに配置します。

配置したらフォルダ名を適当に変えます。ここでは「hello」としました。

http://localhost/hello/に接続してみてください。

f:id:atomer:20110204213336p:image:w200

CodeIgniterのWelcomeページが表示されたら配置は完了です。

設定ファイルの編集

配置が済んだら次は設定ファイルのとりあえず必要な部分だけ修正します。設定ファイルは hello\application\config\の中にあります。いくつかファイルがありますが、そのなかのconfig.phpを開きます。

次のような変数があります。

$config['base_url'] = '';

ここでサイトのベース(ルート)となるURLを定義します。anchor()やbase_url()などといった関数を使うときはこのURLが基準となります。 2.0 はここを設定しなくても自動で設定されるようです。

$config['base_url'] = 'http://localhost/hello/';

こんな感じに。これを指定してなくてもアクセスはできます。

次に同じくconfigフォルダ内のroutes.phpを開いてください。

$route['default_controller'] = "welcome";

となっているので変更します。

$route['default_controller'] = "hello";

これはサイトのトップのURLアクセスしてきたときに呼び出すControllerの定義です。何でもいいんですが、デフォルトから変えておきます。(もちろんwelcomeのまんまでもいいですが)

これであとはContorolerとViewを用意するだけです。

Controlerの作成

hello\application\controllersがControllerを管理するディレクトリです。controllersに移動するとindex.htmlとwelcome.phpがあると思います。welcome.phpが今http://localhost/hello/を表示させているControllerです。

Controllerも定義はめちゃくちゃ簡単なんで一から書いてもいいんですが、めんどくさいのでwelcome.phpをコピーして使います。コピーしてhello.phpに名前を変えてからファイルを開いてください。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

	function __construct()
	{
		parent::__construct();
	}

	function index()
	{
		$this->load->view('welcome_message');
	}
}

これがCodeIgniterのControllerです。CodeIgniterでは /index.php/クラス名/メソッド名 という形でアクセスする事になるのでその対応関係は見たとおりです。例えば最初から存在しているwelcomeというControllerの場合http://localhost/hello/index.php/hello/indexという形でアクセスする事でWelcome::indexが実行される事になります。

ファイル名とクラス名は揃えてください。今回の場合で言えばファイル名はhello.php、クラス名はHelloとなります。クラス名は最初大文字です。

さてコピーしたファイルなので変更しないといけませんが、変えるのは2箇所だけでいいです。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Hello extends CI_Controller {

	function __construct()
	{
		parent::__construct();
	}

	function index()
	{
		$this->load->view('index');
	}
}

クラス名をHelloに、読み込むViewをindexに変更しました。

$this->load->view()はViewを読み込んでくれます。第2引数にはViewに渡す変数を定義できます。第2引数連想配列で渡してあげます。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Hello extends CI_Controller {

	function __construct()
	{
		parent::__construct();
	}

	function index()
	{
		$data['message'] = 'Hello World!!!';
		$this->load->view('index', $data);
	}
}

これでindexでは$messageとして変数アクセスできます。

Viewの作成

先ほど$this->load->view('index', $data);としてViewを読み込むようにしましたが、このindexは hello\application\views の中の物になります。「index」とだけ指定するとhello\application\views\index.phpを読み込むようになります。

$this->load->view()はviewsディレクトリから相対的に読み込むようになるので、$this->load->view('hoge/foo')とすればhello\application\views\hoge\foo.php となります。

ここではindexとだけ定義してあるのでviewsディレクトリにindex.phpを作ります。

<html>
<head>
	<title>Hello World</title>
</head>
<body>
<h1><?php echo $message ?></h1>
</body>
</html>

こんな感じ。$messageはControllerから渡された変数です。

ページを見てみる

さぁhttp://localhost/hello/アクセスしてみましょう。http://localhost/hello/index.php/hello/indexでもいいです。

どうでしょうか?「Hello World」が表示されたでしょうか。ここまで5分。余裕が残るくらい。


これが基本的なCodeIgniterでのページの作成方法です。すごい簡単なので触るうちにすぐ使い方を覚えると思います。今回Modelは使わなかったですが、Modelも扱いはめちゃくちゃ簡単です。日本語のユーザーガイドもあるのでほとんど困ることはないと思います。

CodeIgniterへようこそ : CodeIgniter ユーザガイド 日本語版

ただ、2.0になってたんでね…。ユーザーガイドの方は現時点で1.7.3のものなんで2.0使う場合は多少違うところあるかもしれないです。

変更点結構あるみたいなので僕も今から2.0をチェックです。


そして、

ホーム :: CodeIgniter Con 2011, Tokyo Japan

2月19日!カンファレンスも迫ってきてます。もう募集は終了しちゃってるみたいですが。僕は行く予定です。

何か面白い話聞けたらまたエントリー書きたいと思います。


修正

いくつか記述が間違ってました。すいません。。。

  • base_url() は $config['base_url'] を修正しなくても自動で設定される。
  • applicationディレクトリはsystemディレクトリの外に出たようです。なんで気付かなかった…。

ご指摘ありがとうございました。

Kenji_sKenji_s 2011/02/04 22:50 1.7 と 2.0 の説明が混じってしまってますね。

2.0 では base_url は設定しなくても自動設定されます。
あと、applicationフォルダは systemフォルダの外に出されました。

atomeratomer 2011/02/05 02:07 ご指摘ありがとうございます。修正しました。
2.0での説明をするならしっかり変更点を把握した上でするべきでした…。

ひと通りChange Logに目を通しましたが、やはりいろいろ変更されてますね。個人的に$route[‘404_override’]は助かります。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/atomer/20110204/1296823828