CodeIgniterを試しに使ってもらう手っ取り早い1つの方法(PHP Advent Calendar jp 2010 Day 4)

PHP Advent Calendar 3日目です。

cakePHPやSymfonyは独立してAdvent CalendarやってるのでCodeIgniter使いの自分としてはちょっと淋しい訳で。そこで、前2日の内容がPHPネイティブな内容ではありましたが、1人でもユーザーを増やすべく、無理やりCodeIgniterネタをねじ込んでみようと思います。

タイトルの通り、できるだけ手っ取り早くCodeIgniterを使ってみます。CodeIgniter使ったことがないPHPerは週末中にこの内容で試しに使ってみるとイイと思うよ!!

CloudIgniterの準備

CodeIgniterの設置は非常に簡単です。しかし、簡単であっても初めての人には面倒なものです。そこでホスティングサービスの無料プランを使ってみます。どれだけ手っ取り早くCodeIgniterを使って貰えるかが今回の肝な訳で。

CloudIgniter : http://www.getcloudigniter.com/

CloudIgniterは、CodeIgniter専用のホスティングサービスです。無料プランでもFTPはもちろん、SSHも使えます。登録も簡単に進みますので注意が必要なところだけ説明しておきます。

使用するプランはMistです。Mistプランの場合、独自ドメインは使えず、hoge.getcloudigniter.comのサブドメインのhoge部分が登録時に指定できます。User NameやPassword登録画面の一番下の項目、”Primary Domain Name”がこれにあたります。

以下の画面まで到達すれば準備は完了です。この時点でCodeIgniter 1.7.2インストールされ、各種設定が自動で行われます。私は屋号(e2esound)をサブドメインにしてみました。

“manage”をクリックするとサーバー情報やSSH、FTPの情報が確認できます。

設定したURLに接続すると、”Welcome to CloudIgniter!”のページが表示されます。

Hello, World!

早速、Hello, World!してみます。

/domains/hoge.getcloudigniter.com/application以下の各ディレクトリにファイルを置きます。主に使うのはこんなところ。

  • controllers
  • models
  • views
  • helpers (自作の関数置くところ)
  • libraries (自作のクラス置くところ)

まずは、Controllerから。controllers/hello.phpで用意します。

Controller、Model共通のルールとして、気をつけなければならないのは2点。

  • ファイル名とクラス名は同一
  • クラス名の最初の1文字目は必ず大文字

</p>

<p>&lt;?php<br />
 class Hello extends Controller<br />
 {<br />
 function __construct()<br />
 {<br />
 parent::Controller();<br />
 }</p>

<p>function index()<br />
 {<br />
 // viewに渡すデータは連想配列で<br />
 $data['title']     = "CloudIgniterでHello, World!";<br />
 $data['hello']     = "Hello, World!";</p>

<p>// viewを呼んで値を渡す<br />
 $this-&gt;load-&gt;view('hello_view', $data);<br />
 }<br />
 }</p>

<p>/* End of file hello.php */<br />
 /* Location: ./application/controllers/hello.php */</p>

<p>

Controllerで”Hello, World!”をechoさせても良いですが、味気ないのでViewの呼び出しをしてみます。

Views/hello.phpとして作成します。
View自体の内容はhtmlで、Controllerで渡した連想配列の添え字を変数としてechoすれば出力されます。

</p>

<p>&lt;html&gt;<br />
 &lt;head&gt;<br />
 &lt;title&gt;&lt;?php echo $title;?&gt;&lt;/title&gt;<br />
 &lt;/head&gt;<br />
 &lt;body&gt;<br />
 &lt;h1&gt;&lt;?php echo $hello;?&gt;&lt;/h1&gt;<br />
 &lt;/body&gt;<br />
 &lt;/html&gt;</p>

<p>

ここまでの手順を踏むと、http://hoge.getcloudigniter.com/helloにアクセスするとHello, World!が表示されます。

Modelも使ってみたい

Hello, World!したからいいじゃん!と私の中の怠惰なゴーストが囁きますが、ここまで来たらModelも使ってみたい!でもDBで云々すると誰も読まないはず。。。なので、Modelに無理矢理機能を1つ実装して使ってみます。

Modelは、models/sample_model.phpとして作成します。特に意味も無くunixtimeを呼んでみることに。

</p>

<p>&lt;?php<br />
 class Sample_model extends Model<br />
 {<br />
 function __construct()<br />
 {<br />
 parent::Model();<br />
 }</p>

<p>function unixtime()<br />
 {<br />
 return time();<br />
 }<br />
 }<br />
 /* End of file sample_model.php */<br />
 /* Location: ./application/models/sample_model.php */</p>

<p>

作ったModelをControllerから呼び出して使ってみます。

</p>

<p>&lt;?php<br />
 class Hello extends Controller<br />
 {<br />
 function __construct()<br />
 {<br />
 parent::Controller();<br />
 }</p>

<p>function index()<br />
 {<br />
 // modelを呼び出す<br />
 $this-&gt;load-&gt;model('sample_model');<br />
 // 呼び出したmodelはmodel名を使ってメソッドチェーン<br />
 $data['unixtime']  = $this-&gt;sample_model-&gt;unixtime();</p>

<p>// viewに渡すデータは連想配列で<br />
 $data['title']     = "CloudIgniterでHello, World!";<br />
 $data['hello']     = "Hello, World!";<br />
 $data['time_msg']  = 'UNIXTIME : ';</p>

<p>// viewを呼んで値を渡す<br />
 $this-&gt;load-&gt;view('hello_view', $data);<br />
 }<br />
 }</p>

<p>/* End of file hello.php */<br />
 /* Location: ./application/controllers/hello.php */</p>

<p>

表示項目が増えるのでviewも少しいじります。

</p>

<p>&lt;html&gt;<br />
 &lt;head&gt;<br />
 &lt;title&gt;&lt;?php echo $title;?&gt;&lt;/title&gt;<br />
 &lt;/head&gt;<br />
 &lt;body&gt;<br />
 &lt;h1&gt;&lt;?php echo $hello;?&gt;&lt;/h1&gt;<br />
 &lt;h2&gt;&lt;?php echo $time_msg . $unixtime;?&gt;&lt;/h2&gt;<br />
 &lt;/body&gt;<br />
 &lt;/html&gt;</p>

<p>

ページをリロードすると、はい、今そこのあなた、あなたCodeIgniterのMVC使えたよ!

その他の機能詳細、ライブラリ/ヘルパーの使い方、作り方等々の情報は、サンプルも含めて

CodeIgniter ユーザガイド 日本語版 Version 1.7.2

に全部載ってます。量も少ないので気になった人は読んでみて!使ってみて!

まとめ

  • Controller、Modelのファイル名、クラス名には注意が必要。
    • ファイル名とクラス名は同一
    • クラス名の最初の1文字目は必ず大文字
  • ControllerからViewを呼ぶ:$this->load->view(‘file_name’, $data);
  • Controllerで渡した配列は、添え字を変数にするとechoできる
  • ControllerからModelを呼ぶ:$this->load->model(‘file_name’);
  • Modelは呼び出してからメソッドチェーンで使う
  • [重要]CodeIgniter Con 2011, Tokyo Japanの開催は2/19(土)、スピーカー、LT参加者も募集中
  • CodeIgniter 2.0がもう少しで、、、

最後に

という訳で初めてのAdvent Calendar、書いてみました。簡単に使えるフレームワークなので是非使ってみて欲しいです。1度MVCフレームワークを使ったことのある方なら3日もあれば使いこなせるはずです。

明日はredsnowさんが当番です。よろしくお願いしまーす。

おまけ

vim用の辞書ファイル作ってます。
https://github.com/e2esoundcom/CodeIgniter/tree/master/dict/

CodeIgniterを試しに使ってもらう手っ取り早い1つの方法(PHP Advent Calendar jp 2010 Day 4)」への3件のフィードバック

  1. yterajima 投稿作成者

    ありがとうございます!使っていただけるととても嬉しいです。

  2. のりお

    ものすごく分かり安い記事で勉強になりました!
    感謝します!

  3. ピンバック: Mac, iPhone, iPad » CodeIgniter 学習中

コメントを残す

メールアドレスが公開されることはありません。