CodeIgniter 3.1と4.1の違い post
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クラスの導入
- コントローラーフィルターの導入
- REST APIを提供するRESTful Resource Handling(RESTishなもの)
Hook
をEventに置き換え- CodeIgniter\Modelの導入
- Entityクラスの導入
- ファクトリー(Factories)の導入
- ファクトリーはインスタンスの生成と管理をするサービスロケーター
- 公式にDBマイグレーションコマンドを提供
- 公式にDBシーディングを提供
主なコーディングの違い
- 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
する必要があるため、それができない場所では使えない
- 検証ルール
- フォーマットのルールは空文字を許可しなくなった
- 空文字を許可したい場合は
permit_empty
を追加する
参考
Date: 2021/02/22