4.1.9에서 4.2.0으로 업그레이드

설치 방법에 해당하는 업그레이드 지침을 참조하십시오.

필수 파일 변경사항

index.php와 spark

다음 파일들은 중요한 변경사항이 있으므로 업데이트된 버전을 반드시 병합해야 합니다:

  • public/index.php

  • spark

중요

위의 두 파일을 업데이트하지 않으면 composer update를 실행한 후 CodeIgniter가 전혀 작동하지 않습니다.

업그레이드 절차는 예를 들어 다음과 같습니다:

composer update
cp vendor/codeigniter4/framework/public/index.php public/index.php
cp vendor/codeigniter4/framework/spark .

Config/Constants.php

EVENT_PRIORITY_LOW, EVENT_PRIORITY_NORMAL, EVENT_PRIORITY_HIGH 상수는 사용 중단(deprecated)되었으며, 정의가 app/Config/Constants.php로 이동되었습니다. 이 상수들을 사용하는 경우 app/Config/Constants.php에 정의하거나, 새로운 클래스 상수인 CodeIgniter\Events\Events::PRIORITY_LOW, CodeIgniter\Events\Events::PRIORITY_NORMAL, CodeIgniter\Events\Events::PRIORITY_HIGH를 사용하십시오.

composer.json

참고

이 절차는 v4.5.0 이상에서는 필요하지 않습니다.

Composer를 사용하고, CodeIgniter v4.1.9 이하를 설치했을 때 /composer.jsonautoload.psr-4App\\Config\\ 네임스페이스가 있다면, 해당 줄을 제거한 후 composer dump-autoload를 실행해야 합니다.

{
    ...
    "autoload": {
        "psr-4": {
            "App\\": "app",             <-- Remove this line
            "Config\\": "app/Config"    <-- Remove this line
        }
    },
    ...
}

주요 변경사항

  • system/bootstrap.php 파일은 더 이상 CodeIgniter 인스턴스를 반환하지 않으며, .env 파일도 로드하지 않습니다(이제 index.phpspark에서 처리됩니다). 이러한 동작에 의존하는 코드가 있다면 더 이상 작동하지 않으므로 수정해야 합니다. 이 변경은 Preloading을 더 쉽게 구현하기 위해 이루어졌습니다.

주요 개선사항

  • Validation::setRule() 메서드의 서명이 변경되었습니다. $rules 파라미터의 string 타입힌트가 제거되었습니다. LSP를 위반하지 않도록 하위 클래스도 마찬가지로 파라미터를 변경해야 합니다.

  • CodeIgniter\Database\BaseBuilder::join()CodeIgniter\Database\*\Builder::join() 메서드의 서명이 변경되었습니다. $cond 파라미터의 string 타입힌트가 제거되었습니다. LSP를 위반하지 않도록 하위 클래스도 마찬가지로 파라미터를 변경해야 합니다.

프로젝트 파일

프로젝트 공간 (root, app, public, writable)의 많은 파일이 업데이트되었습니다. 이 파일들은 system 범위 밖에 있으므로 직접 개입하지 않으면 변경되지 않습니다. 프로젝트 공간의 변경사항 병합을 돕는 서드파티 CodeIgniter 모듈이 있습니다: Packagist에서 탐색.

참고

버그 수정을 위한 매우 드문 경우를 제외하고, 프로젝트 공간의 파일 변경은 애플리케이션을 손상시키지 않습니다. 여기에 기재된 모든 변경사항은 다음 주요 버전까지 선택 사항이며, 필수 변경사항은 위의 섹션에서 다루고 있습니다.

콘텐츠 변경사항

다음 파일들은 중요한 변경사항(사용 중단 또는 시각적 조정 포함)이 있으며, 업데이트된 버전을 애플리케이션에 병합할 것을 권장합니다:

  • app/Config/Routes.php
    • 기본 설정을 보다 안전하게 만들기 위해 자동 라우팅이 기본적으로 비활성화로 변경되었습니다.

모든 변경사항

다음은 프로젝트 공간에서 변경된 모든 파일의 목록입니다. 대부분은 런타임에 영향을 미치지 않는 단순한 주석이나 형식 변경입니다:

  • app/Config/App.php

  • app/Config/Constants.php

  • app/Config/ContentSecurityPolicy.php

  • app/Config/Database.php

  • app/Config/Events.php

  • app/Config/Feature.php

  • app/Config/Filters.php

  • app/Config/Format.php

  • app/Config/Logger.php

  • app/Config/Mimes.php

  • app/Config/Publisher.php

  • app/Config/Routes.php

  • app/Config/Security.php

  • app/Config/Validation.php

  • app/Config/View.php

  • app/Controllers/BaseController.php

  • app/Views/errors/html/debug.css

  • app/Views/errors/html/debug.js

  • app/Views/errors/html/error_404.php

  • app/Views/errors/html/error_exception.php

  • app/Views/errors/html/production.php

  • app/Views/welcome_message.php

  • app/index.html

  • preload.php

  • public/index.php

  • spark