ウェブイチをcodeigniterで実装する-第一回-
- 作者: 河合勝彦,鈴木憲治,安藤建一
- 出版社/メーカー: 翔泳社
- 発売日: 2008/06/10
- メディア: 大型本
- 購入: 5人 クリック: 65回
- この商品を含むブログ (19件) を見る
前回のブログレコメンドアルゴリズム超入門 - nigoblogでウェブイチウェブイチ
のβ版を作ったと報告しました。
今回はそのウェブイチをcodeigniterで実装し直すまでを報告します。
- codeigniterとは?
- codeigniter Assetファイルの置き場
- データベースの設定
- オートロードの設定
- コントローラーの実装
- モデルの実装
- ビューの実装
以上の流れで説明します。
ちなみに第一回とありますが、もしかして今後連載するかもしれないので一応つけときました。
codeigniterとは?
概要
訳すと「コードに火をつけろ!!」
かっこいいすね(若干違うけど)
簡単にいうとフレームワーク
ただし軽量
一般的にwebのフレームワークというとcakePHPやRuby on Railsなんかがイメージにあるかと思いますが、基本それと同じです。
ただし、上の2つと比較してめちゃくちゃ軽い!!
もともとのファイルが少なく、自由度が高いというのが特徴です。
命名規則なんかは厳密ではないのですが、上記2つに習って名付ければあまり不便ではないかと。
というわけで軽いというのが魅力のcodeigniter
ダウンロード
このリンクからダウンロードできます。トップ :: 日本CodeIgniterユーザ会
ここはさらにユーザーズガイドなども乗っておりその充実さも魅力の一つ!
ダウンロードしたファイルを今回はMAMPでテストするのでhtdocs以下にダウンロードしたファイルを置きます。この辺はそれぞれ開発環境があると思うのではしょります。いつか開発環境についても言及したいと思います。
すると次のような構成になります。今回webichiの場合
htdocs/ webichi/ application/ system/ user_guide/ user_guide_ja/
主にapplication/ の中身を色々いじっていきます。
他にもありますがとりあえずこれだけ、次はcss, img, jsなどのAssetファイルの置き場についてです。
codeigniter Assetファイルの置き場
css, img, jsはそれぞれこのように配置します
htdocs/ webichi/ application/ css/ img/ js/ system/ user_guide/ user_guide_ja/
これだけ!!よく置き場がどこかわからないというので、ポイントです。ビューからアクセスする方法は後に説明します。
データベースの設定
次はデータベースの設定です。まずapplication以下は次のようになります。
application/ cache/ config/ core/ controllers/ errors/ helpers/ hooks/ libraries/ languages/ logs/ models/ views/ third_party/
色々ありますが、まずはconfigから。
configの中にdatabase.phpがあります。
それは次のようになっています。
config/database.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost'; $db['default']['username'] = ''; $db['default']['password'] = ''; $db['default']['database'] = ''; $db['default']['dbdriver'] = 'mysql'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE;
このファイルの username, password, database を指定することでデータベースに接続ができます。
オートロードの設定
次もconfig以下にあるautoload.phpをみていきます。
config/autoload.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $autoload['packages'] = array(); $autoload['libraries'] = array('database'); $autoload['helper'] = array(); $autoload['config'] = array(); $autoload['language'] = array(); $autoload['model'] = array('item_model');
例によってコメントは消しています。まずlibrariesを書き換え、ここにdatabaseとすることでデータベースと接続できます。
オートロードがなければコントローラやモデルでライブラリを使うたびにロードしなければいけませんが、オートロードを使えばいちいちそれをする必要がありません。model のところは後に説明します。
コントローラーの実装
実装の前に簡単にMVCモデルですが、基本的にMVCそれぞれのディレクトリの中には
データベースのテーブルに対応するファイル(ビューならディレクトリ)
を作成します。今回使うデータベースは
items
users
likes
とあるのでMVCそれぞれ一つづつ作成します。今回はとりあえずトップページのみ作成ということでitemsのMVCを作成します。
まずファイル名は
item.php
としました。cakeだと色々怒られそうな名前ですが…
それでは実装ファイルを載せます
contollers/item.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Item extends CI_Controller { public function index() { $this->load->model('item_model', 'items'); $data['items'] = $this->items->get_items(); $this->load->view('items/index', $data); } }
cakeやrailsをやったことがあれば簡単にわかると思いますが、一応説明します。
itemクラスにそれぞれのビューに対応するメソッドを作成します。今回はトップページだけなのでindex()のみ
最初にモデルを読み込みます。さっきオートロードでやったのにと思いますが、読み込みます。
まずモデルのファイル名、次にそのメソッド内で使う変数名を記述します。
次に配列に代入するようにitem_model内のメソッドget_items()の結果を読み込みます。
最後に対応するviewをロードします。変数をviewメソッドの引数に追加するとそのviewで変数がつかえます。
モデルの実装
次のようになります。
models/item_model.php
<?php class Item_model extends CI_Model{ function __construct(){ parent::__construct(); } function get_items(){ $query = $this->db->order_by('id', 'random'); $query = $this->db->get('items', 10); return $query->result(); } }
モデルクラスを作ります。これもcakeやrailsをやっていればわかると思います。
このモデルを呼び出すと使えるメソッドを書いていきます。
get_items()はテーブルitem内にある要素をランダムに呼び出し、返すというメソッドとなります。(コードを読んで直感的にわかるのもcodeigniterのいいところ)
ビューの実装
これは長くなるので要点だけ説明します。
まずcssなどは
<link rel="stylesheet" href="../css/bootstrap.css" >
のように呼びます。
次に変数は
<?php print_r($items); ?>
のように呼びます。
つまりコントローラーの引数で配列を渡し、その配列の引数が変数名となります。(文字だとゴチャゴチャ)
これくらいでしょうか。
あとは普通にforeachなども使えます。
以上で説明を終わります。
codeigniterはドキュメントがしっかりしているので習得が用意だと思います。
cakeが重いと思ったら是非試してみては!?
最後に今回作成したファイルはgithubにあげたので是非参考にしてください。
nigohiroki/webichi · GitHub
それでは!