『Webサイト制作者のためのPHP入門講座』の CodeIgniter アプリを CodeIgniter 2.0.0 に移行する

Webサイト制作者のためのPHP入門講座 には、CodeIgniter で作成したアプリケーションである「グルメMAP」が含まれています。これは、CodeIgniter 1.7.2 を利用して作成されています。

今回は、この「グルメMAP」を CodeIgniter 2.0.0 に移行してみます。

CodeIgniter 1.7.2 から 2.0.0 への移行の方法は、基本的には

に記述されています。

CodeIgniter 2.0.0 は、日本 CodeIgniter ユーザ会の ci-ja-all-in-one-2.0.0-1.zip を使用します。

まず、ユーザガイドに従って、このアプリに関係する以下を実施します。

ステップ 1: CodeIgniter ファイルの更新

system フォルダ内の application フォルダを除く全てのファイルとディレクトリを置き換えます。



CodeIgniter 2.0.0 からは、図のようにフォルダ構成が変わっています。application フォルダは system フォルダの外に配置されるように変更されました。

application フォルダを残し、他のフォルダは削除し、2.0.0 のフォルダをコピーします。

続いて、system フォルダ、application フォルダをブラウザから直接アクセスできない位置に設置しているためのパスの修正をします。

Step 6: クラスの継承の更新

コントローラは CI_Controller を、モデルは CI_Model を継承するように変更されました。

Step 7: 親クラスのコンストラクタの呼び出しの更新

継承するコントローラ名、モデル名が変わっているので、コンストラクタも変更する必要があります。

ブラウザからアクセスしてテスト

これでブラウザからアプリにアクセスしてみます。


設定ファイルの暗号化キーが設定されていないと 2.0.0 からはエラーになります。

本の P.318 の指示どおりに暗号化キーを設定済みなら、このエラーは出ません。


暗号化キーを config.php で設定し、再度、ブラウザからアクセスします。

ページが正しく表示されました。


ところが、検索してみると、

上記の Fatal error が出てしまいました。

これは、Input クラスにあった xss_clean() メソッドが 2.0.0 からは Security クラスへ移動したことが原因のエラーです。

Security クラスはコアクラスではないので自動的にはロードされません。コントローラのコンストラクタでロードするように指定し、$this->input->xss_clean() となっているところを $this->security->xss_clean() に変更します。



これで、正常に検索できるようになりました。


以上で、2.0.0 への移行は完了しました。意外に簡単だったのではないでしょうか?

Webサイト制作者のための PHP入門講座

Webサイト制作者のための PHP入門講座