CodeIgniterのURIルーティングで.htaccessいらず

このエントリーをはてなブックマークに追加
はてなブックマーク - CodeIgniterのURIルーティングで.htaccessいらず
Share on Facebook
[`tweetmeme` not found]

とりあえず、開発スピードを優先させるためにフルスクラッチで作ってたジオポですけど、これから、国際化対応させたり、DB使う場面が出てくると思うので、PHPのフレームワーク CodeIgniterに変換した。

フルスクラッチは、コントローラーからビューだけをinclude()する方法で作っていたので、置き換えもスムース。そして、スピーディー。

  1. CodeIgniterをダウンロード、展開
  2. .htaccess 書き換え
  3. config.php の設定
    • $config[‘base_url’]    = "http://" . $_SERVER["HTTP_HOST"]; としてローカル環境・本番環境でも切り替え必要なし。
    • //$config[‘index_page’] = "index.php"; コメントアウト
  4. autoload.php の設定
    • ライブラリのuser_agentとコンフィグに独自config
  5. コントローラーをクラス化してやり、少しの書き換え
  6. 同時に独自configファイルを作ってやる
    • サーバ名を見て、ローカルだったらデバッグフラグ立てる
    • Google Maps APIがローカルだと使えない(localhostならいけるけど、プロジェクトごとに projectName.localhostとしてhostsの変更してるので…)
  7. ビューを配置
  8. user_agents.php の書き換え
    • 日本向けの携帯設定と、iPhone判別を追加

こんだけです。多分、1時間もかかってないんじゃないかな?

気づいたこと→routes.phpが素敵

routes.php でクラス、メソッドの呼び出しがマッピングできるんだけど、正規表現が使えるからとっても便利。

今までは、.htaccessでmod_rewriteのために正規表現の条件処理を加えて、パラメータをクエリとして渡してやって、そのクエリをバリデートと分岐させるためにPHPの内部でも正規表現で条件分けしてた。

CodeIgniterだとそんなのいらない、

$route['([0-9a-zA-Z_-]{1,10})'] = "geopo/mapGeopo/$1";

これだけで完了。記述方法もとってもわかりやすい(たしか、Cakeだともっと複雑だった気が)。

そんなこんなで、これから国際化に向けてがんばろうっと。

ブログで取り上げてもらった

ヅラずれなるままに(2009-02-26) – ジオポを試してみた

書いていただき、ありがとうございます。

地図からの選択はわかりにくいかな?あのマーカーがドロップしたときの動きが好きで、あんな仕様にしたんだけど、後で変えて試してみっか。


タグ: ,

コメント / トラックバック 3 件

  1. […] This post was mentioned on Twitter by Kenji, 生きてりゃいいじゃん。. 生きてりゃいいじゃん。 said: CodeIgniterのURIルーティングで.htaccessいらず | クレコ http://htn.to/Nm5ADz […]

  2. inagaki より:

    コメントありがとう!
    実際に試してみて、やはりこちらが正解だと思ったよ。ありがとう。

    ついでに、ちょっと自分用に技術的なメモを書いておく。

    真ん中のマーカーはマップを動かしてやるときにイベント同期してるんだけど、IEみたいにJavaScriptの処理が遅いブラウザだと、動きがにぶくなっちゃう><

    だから、動かしてる間のイベントにはマーカー同期だけして、
    GEvent.addListener(map, “move”, function(){});
    動かし終わった間のイベントに、ジオポの書き換え処理など書くことで処理は軽くなった。
    GEvent.addListener(map, “moveend”, function(){});

    常識かもしれないけど、moveendっていうイベント知らなかった

  3. NI-Lab. より:

    たしかにあのドロップは楽しい動きをするので私も好きですが、

    スクロール地図移動 → マーカードロップ
    の2段階の手順はちょっとめんどうなんですよね。

    位置を特定するだけなら
    中心点がジオポになるだけでじゅうぶんかなーと思います。

    複数の点をまとめて指定してジオポのURLを生成するとかになると、話は別ですけど。