4.1.9에서 4.2.0으로 업그레이드
설치 방법에 해당하는 업그레이드 지침을 참조하십시오.
필수 파일 변경사항
index.php와 spark
다음 파일들은 중요한 변경사항이 있으므로 업데이트된 버전을 반드시 병합해야 합니다:
public/index.phpspark
중요
위의 두 파일을 업데이트하지 않으면 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.json의 autoload.psr-4에 App\\와 Config\\ 네임스페이스가 있다면, 해당 줄을 제거한 후 composer dump-autoload를 실행해야 합니다.
{
...
"autoload": {
"psr-4": {
"App\\": "app", <-- Remove this line
"Config\\": "app/Config" <-- Remove this line
}
},
...
}
주요 변경사항
system/bootstrap.php파일은 더 이상CodeIgniter인스턴스를 반환하지 않으며,.env파일도 로드하지 않습니다(이제index.php와spark에서 처리됩니다). 이러한 동작에 의존하는 코드가 있다면 더 이상 작동하지 않으므로 수정해야 합니다. 이 변경은 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