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)의 많은 파일이 업데이트되었습니다. 이러한 파일들은 **시스템 범위 외부에 있으므로 직접 개입하지 않으면 변경되지 않습니다. 프로젝트 공간의 변경사항 병합을 도와주는 서드파티 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