CodeIgniter 3.1と4.1の違い
(最終更新:2021-12-02)
CodeIgniter 3.1と4.1の違いについて簡単にまとめていきます。
動作環境
- CodeIgniter 3.1
- PHP 5.6以上推奨
- PHP 5.3.7で動作
- CodeIgniter 4.1
- PHP 7.3以上
重要な変更点
- 公式にComposerでのインストールをサポート
- 公式にPHPUnitによるアプリケーションテストをサポート
- 公式にHMVCに対応(コードモジュール)
- 名前空間の導入
- PSR-4準拠のオートローダーの導入
- CodeIgniter4が提供するクラスをサービスロケーター(Services)で管理
- CodeIgniterスーパーオブジェクトは廃止
- 公式コマンドsparkの提供
spark
によるコードジェネレーター
その他の主な追加機能
- .env及び環境変数による設定の変更
- RequestクラスとResponseクラスの導入
- 自動ルーティングを無効に設定可能
- コンテントネゴシエーション
- HTTPメソッドスプーフィング
- コンテンツセキュリティポリシー
- コントローラーフィルターの導入
- REST APIを提供するRESTful Resource Handling(RESTishなもの)
- Viewセル
- Viewレイアウト
Hook
をEventに置き換え- CodeIgniter\Modelの導入
- Entityクラスの導入
- ファクトリー(Factories)の導入
- ファクトリーはインスタンスの生成と管理をする
- 公式にDBマイグレーションコマンドを提供
- 公式にDBシーディングを提供
- CURLRequestクラス
- Honeypotクラス
- Throttlerクラス
- CLIライブラリ
- デバッグツールバー
主なコーディングの違い
- PSR-4に準拠するクラス名及びクラスファイル名
- ビュー及びヘルパー以外の全てに名前空間が必要
- アプリケーションのデフォルトの名前空間は
App
- 設定の名前空間は
Config
- アプリケーションのデフォルトの名前空間は
$this->load->xxx()
がなくなる- コンポーネントのロード方法
- CodeIgniterのクラス(コアクラス、ライブラリ)
Config\Services
service()
session()
- モデル
new
するFactories
model()
- ライブラリ
new
するFactories
- 設定
new
するFactories
config()
- ビュー
view()
- ビューは中身を
echo
するか、return
するか、Responseオブジェクトにセットする
- ヘルパー
helper()
- コントローラーの
$helpers
プロパティ
- CodeIgniterのクラス(コアクラス、ライブラリ)
- コントローラーは次のプロパティを自動的に持つ
- Requestオブジェクト
$this->request
- Responseオブジェクト
$this->response
- Loggerオブジェクト
$this->logger
- Requestオブジェクト
細かな仕様変更
細かい仕様変更については、把握し切れていません。それほどないと思いますが。
- redirect()
- 引数と戻り値が完全に変わっているので注意
- コントローラーから
RedirectResponse
をreturn
する必要があるため、それができない場所では使えない - それ以前にセットしたCookieを送信するには、
redirect()->withCookies()
とする必要がある - それ以前にセットしたヘッダーを送信するには、
redirect()->withHeaders()
とする必要がある
- バリデーション
- 変数の値を変更しなくなった
例えば、trim
を指定しても検証中はtrimされるが、検証後の変数の値自体は変更されない- 値を整形する関数を指定しても無意味(検証中のそのルールの処理時に実行され値が一時的に整形されるが、false が返った場合にのみ検証が失敗とされる。次のルールの処理時には元の値が使用される)
- バリデーションルール
- フォーマットのルールは空文字を許可しなくなった
- 空文字を許可したい場合は
permit_empty
を追加する
参考
Date: 2021/02/22