4.6.x에서 4.7.0으로 업그레이드

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

주요 변경사항

PHP 8.2 필수

최소 PHP 요구 사항이 PHP 8.2로 업데이트되었습니다.

현재 런타임이 PHP 8.2보다 낮은 경우 CodeIgniter를 업그레이드하기 전에 먼저 PHP를 업그레이드하십시오.

유효성 검사 regex_match 플레이스홀더

regex_match 유효성 검사 규칙의 플레이스홀더는 이제 이중 중괄호를 사용해야 합니다.

이전에 regex_match[/^{placeholder}$/]와 같이 단일 중괄호를 사용했다면 regex_match[/^{{placeholder}}$/]로 업데이트하십시오.

이는 {1,3}과 같은 정규식 수량자와의 모호함을 방지합니다.

모델 기본 키 유효성 검사 시점 및 예외

insertBatch()updateBatch() 메서드가 이제 updateOnlyChangedallowEmptyInserts 같은 모델 설정을 준수합니다. 이 변경으로 모든 insert/update 작업에서 일관된 처리가 보장됩니다.

insert()/insertBatch() (자동 증가 없이), update(), delete()에서 기본 키 값이 이제 데이터베이스 쿼리 전에 유효성 검사됩니다.

유효하지 않은 기본 키 값은 이제 데이터베이스 레이어의 DatabaseException 대신 InvalidArgumentException을 던집니다.

유효하지 않은 기본 키에 대해 DatabaseException을 catch하는 코드가 있다면 InvalidArgumentException도 처리하도록 업데이트하십시오.

Entity 변경 감지가 심층적으로 수행됩니다

Entity::hasChanged()Entity::syncOriginal()은 이제 배열과 객체에 대해 심층 비교를 수행합니다.

이전의 얕은 (참조 기반) 동작에 의존하고 있었다면 중첩된 변경이 이제 감지되므로 엔티티 업데이트 흐름과 테스트를 검토하십시오.

또한 Entity::toRawArray()$recursivetrue일 때 이제 엔티티 배열을 재귀적으로 변환합니다.

암호화 핸들러 키 상태

OpenSSLHandlerSodiumHandler$params를 통해 키가 encrypt()/decrypt()에 전달될 때 더 이상 핸들러의 내부 키를 변경하지 않습니다.

키를 한 번 전달하고 나중에 암묵적으로 재사용하는 코드가 있다면 Config\\Encryption의 명시적 키 설정으로 전환하거나 (또는 encrypter 서비스 생성 시 커스텀 설정을 전달하십시오).

인터페이스 변경사항

일부 인터페이스가 변경되었습니다. 프레임워크 인터페이스를 구현하는 클래스는 이러한 변경 사항을 반영하도록 API를 업데이트해야 합니다.

자세한 내용은 변경 로그를 참조하십시오.

메서드 시그니처 변경사항

일부 메서드 시그니처가 변경되었습니다. 프레임워크 클래스를 확장하는 클래스는 LSP 호환성을 유지하기 위해 메서드 시그니처를 업데이트해야 합니다.

자세한 내용은 변경 로그를 참조하십시오.

속성 시그니처 변경사항

일부 속성 타입 시그니처가 변경되었습니다 (예: nullable Entity::$dataCaster). 이러한 클래스를 확장하고 있다면 코드를 적절히 업데이트하십시오.

자세한 내용은 변경 로그를 참조하십시오.

사용 중단 항목 제거

일부 사용 중단된 항목이 제거되었습니다. 앱이 이러한 API를 아직 사용하거나 확장하고 있다면 업그레이드 전에 코드를 업데이트하십시오.

자세한 내용은 변경 로그를 참조하십시오.

프로젝트 파일

프로젝트 공간 (root, app, public, writable)의 일부 파일이 업데이트되었습니다. 이 파일들은 system 범위 밖에 있으므로 직접 개입하지 않으면 변경되지 않습니다.

참고

프로젝트 공간의 변경 사항 병합을 지원하는 서드파티 CodeIgniter 모듈이 있습니다: Packagist에서 탐색.

콘텐츠 변경 사항

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

설정

  • app/Config/Migrations.php
    • Config\Migrations::$lock이 추가되었으며 기본값은 false로 설정되었습니다.

이 릴리스에서 새로 추가된 파일들:

  • app/Config/Hostnames.php

  • app/Config/WorkerMode.php

모든 변경 사항

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

  • app/Config/CURLRequest.php

  • app/Config/Cache.php

  • app/Config/ContentSecurityPolicy.php

  • app/Config/Email.php

  • app/Config/Encryption.php

  • app/Config/Format.php

  • app/Config/Hostnames.php

  • app/Config/Images.php

  • app/Config/Migrations.php

  • app/Config/Optimize.php

  • app/Config/Paths.php

  • app/Config/Routing.php

  • app/Config/Session.php

  • app/Config/Toolbar.php

  • app/Config/UserAgents.php

  • app/Config/View.php

  • app/Config/WorkerMode.php

  • public/index.php

  • spark