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以上

重要な変更点

その他の主な追加機能

主なコーディングの違い

  • 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プロパティ
  • コントローラーは次のプロパティを自動的に持つ
    • Requestオブジェクト $this->request
    • Responseオブジェクト $this->response
    • Loggerオブジェクト $this->logger

細かな仕様変更

細かい仕様変更については、把握し切れていません。それほどないと思いますが。

  • redirect()
    • 引数と戻り値が完全に変わっているので注意
    • コントローラーからRedirectResponsereturnする必要があるため、それができない場所では使えない
    • それ以前にセットしたCookieを送信するには、redirect()->withCookies()とする必要がある
    • それ以前にセットしたヘッダーを送信するには、redirect()->withHeaders()とする必要がある
  • バリデーション
    • 変数の値を変更しなくなった
    • 例えば、trimを指定しても検証中はtrimされるが、検証後の変数の値自体は変更されない
    • 値を整形する関数を指定しても無意味(検証中のそのルールの処理時に実行され値が一時的に整形されるが、false が返った場合にのみ検証が失敗とされる。次のルールの処理時には元の値が使用される)
  • バリデーションルール
    • フォーマットのルールは空文字を許可しなくなった
    • 空文字を許可したい場合はpermit_emptyを追加する

参考

Date: 2021/02/22

Tags: codeigniter, codeigniter4