CodeIgniter2から3へのバージョンアップをしましょう(急いで!)

この記事はCodeIgniter Advent Calendar 2016の3日目です。
2日目の竹腰さんの記事はこちらからどうぞ

来年CodeIgniterのバージョンは4に上がります。
そんな中ちらほら聞こえてくる「まだCodeIgniter2で運用してます」ってお話。
稀に「まだCodeIgniter1です」って話も聞きますが….. やはり3にバージョンアップするべきですよ(断言)

CodeIgniter2は2015年10月31日にサポートが切れました。今後更新されることはないです。まだDownloadできるのが不思議なぐらいです。バグ修正もされないわけで、とっとと3に更新せねばなのですよ。

https://codeigniter.com/download

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-03-11-47-09

アップグレード方法
ユーザーガイドに掲載されています。結構事細かに書かれています。

一番変更が多く、注意すべきは2.2.x から3.0への変更です。
2.2.0にもまだなっていない場合は、まずは2.2.0までバージョンをアップしましょう。
それから2.2.x から3.0の手順を実行した後、最新までバージョンをupしましょう。
ソースコードの改変は、ほぼファイル名とclass名だけですので割とあっさりと作業は完了します。

アップグレードするときのハマリどころ
おそらく、多くのアプリケーションでOAuth認証を利用したログイン機能を実装していますよね?Facebook SDKやTwitter SDKを利用したコードを書かれていたりするかと思います。もしくはそれらを利用したライブラリを利用しているかもしれません。CodeIgniter2ではsession classはcookieを使ってデータを保存管理し動作していますが3からはPHPのsessionで動作します。この変更は結構大きくて2系向けに書かれたOAuth系のライブラリは使えなくなっていたり挙動がおかしくなったりします。バージョンにあったものを再度DLして再設置したり少しだけ調整が必要となります。
修正そのものはそれほど時間はかかりません。動作確認を含めても1日かかることは稀かと思われます。

この際だから一緒にやっておきたいComposer対応
composer管理できちゃうものはcomposer管理になるよう修正しましょう。
2系でもできたことですが、バージョンアップするわけですしこの際ですからちゃんと対応しておきましょう。
composerを使うかどうかはconfigに設定を入れるだけです。
ユーザガイドより抜粋

さらに、 CodeIgniter に Composer のオートローダを使わせたいなら、 application/config/config.php 中の $config['composer_autoload'] に TRUE またはカスタムパスを設定するだけです。

CodeIgniter1 , CodeIgniter2をまだお使いの皆様。
今月中にでもバージョンアップを済ませて、気持ち良く2017年を迎えましょう!