2007年11月12日

CodeIgniterの基本:まずは表示

PHPに限らずプログラムを作成するときに、基本的な設計みたいなことって皆さんするんでしょうか?もちろんプロの方はそんなの当たり前だとはおもうのですが、私のような素人?で趣味のプログラミングみたいな場合に、例えばクラス図ぐらいは書くよ!とかフローチャートみたいなものは一応メモぐらいはしてから始めるよ!なんて人たちはどのくらいいるんでしょうか?

自分の場合は思い立ったらいきなりエディタ立ち上げて<?phpとか書き始めちゃいますが、皆さんどんな感じなんでしょうねぇ?んで次に自分のプログラミングスタイル(というほど確立されたものではありませんが)ではどーするかというと、例えば前回のスクリプトであれば…
$max_disp = preg_replace("/[^0-9]/", "", $_GET['disp']);

みたいにいきなり書いちゃうわけです。そんでもって次にすることは…
(まあこの場合だとgetデータを取得してるわけですから一応HTMLのformはできてると仮定して)
echo $max_disp;

なわけです(^^;

そんでformから「0」とか「あうあう」とか入力してみて、いちいち確かめるわけです。要するにこの場合だと正規表現の部分に自信がないんですね。で、ようやく$max_dispに入ってる値がまあ正しかろうというところで、echoの行を消してまたぞろぞろ書き始めるわけです。

こんなやり方なんで普通のコンパイル系の言語とかだとやってられないっつーか、とにかくすぐ結果が見えてこないと次が考えられないんですね。そんな程度なんでまさに手続き型というか、一行一行確認しながらぼそぼそとやっていくみたいな…。

で、話はフレームワークなんですが、これがまたやっかいというか、要するに上記の手法?がフレームワークによっては通用したりしなかったりするわけです。上の例では変数が配列じゃないのでechoでいいんですが、配列だとprint_r()とかしないと単にARRAYとか表示されて、まさに「あれ〜?」状態になるじゃないですか(--;。
echo "<pre>".print_r($hairetsu, 1)."</pre>";

みたいなpreタグ併用してよく出力してますけど、フレームワークだとなんか適当なところに書いちゃうと出力されなかったり、エラーでちゃったりするわけなんです。

で、本題ですがCodeIgniterはその辺かなりアバウトというか融通が利くというか、上記の手法(注:手法じゃね〜ョ)が通用するんですね!その後いろいろとわかってくるにしたがってvar_dump()とか$this->output->enable_profiler(TRUE);みたいな技(注:だから技じゃね〜ョ)も覚えましたが、CodeIgniterで開発?するにあたってこの緩さ加減は、自分にとって最大のメリットでした。

そんでチュートリアルにあるblogのコードをほんのちょっとだけいじって、とりあえず表示成功っす。(って全然前置きと関係ないじゃん)

Controller
<?php
class Gappei extends Controller {
function Gappei()
{
parent::controller();
}

function index()
{
$data['title'] = "平成市町村合併";
$data['heading'] = "平成市町村合併";
$data['query'] = $this->db->get('city');
$this->load->view('gappei_view', $data);
}
}
?>

View
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
</head>
<body>
<pre>
<?foreach($query->result() as $row):?>
<?=print_r($row, 1)?>
<?endforeach;?>
</pre>
</body>
</html>

まあとりあえず得意のprint_rで…。controllerのdb->getで読み込んでいるcityというテーブルは前述したMySQLのView、つまりnewcityとかoldcityとかprefとかをJOINした仮想?のテーブルです。

表示結果
stdClass Object
(
[nid] => 1
[pref] => 北海道
[nc] => 函館市
[yomi] => はこだてし
[oid] => 1
[oc] => 函館市
[gdate] => 2004-12-01
)
stdClass Object
(
[nid] => 1
[pref] => 北海道
[nc] => 函館市
[yomi] => はこだてし
[oid] => 2
[oc] => 戸井町
[gdate] => 2004-12-01
)
stdClass Object
(
[nid] => 1
[pref] => 北海道
[nc] => 函館市
[yomi] => はこだてし
[oid] => 3
[oc] => 恵山町
[gdate] => 2004-12-01
)
   :
   :
stdClass Object
(
[nid] => 592
[pref] => 沖縄県
[nc] => 八重瀬町
[yomi] => やえせちょう
[oid] => 2021
[oc] => 具志頭村
[gdate] => 2006-01-01
)

なんかstdClass Objectとかいう謎の文字列が出力されていますがまあちゃんとデータは取れてるみたいですね。
ラベル:codeigniter
posted by ciallost at 01:09| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする