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

data codes through eyeglasses 日記
スポンサーリンク

とりあえず、開発スピードを優先させるためにフルスクラッチで作ってたジオポですけど、これから、国際化対応させたり、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) – ジオポを試してみた

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

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

タイトルとURLをコピーしました