PHP 8.x를 사용하여 WordPress 프로젝트를 작업하는 동안 다음 오류가 발생할 수 있습니다.
치명적인 오류: 포착되지 않은 PHP_CodeSniffer\Exceptions\RuntimeException: Trim(): 문자열 유형의 매개변수 #1($string)에 null을 전달하는 것은 /path/...에서 더 이상 사용되지 않습니다.
이 오류는 PHP 8.x의 지원 중단 경고로 인해 발생합니다. 여기서는 Trim() 함수에 null을 전달하는 것이 더 이상 허용되지 않습니다. 특히 이 문제는 PHP_CodeSniffer 설정의 일부인 WPCS(WordPress Coding Standards) 스니프 내에서 발생합니다. 이 글을 쓰는 현재 최신 버전의 PHP_CodeSniffer 및 WordPress 코딩 표준을 사용하더라도 이 문제는 지속됩니다.PHP_CodeSniffer 및 WPCS 이해
고정
예를 들어,
vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php 파일에서 280번 줄을 찾아 다음 줄을 바꿉니다.
// this $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ); // to this $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );그러나 소프트웨어 개발에 있어서 많은 결정이 그렇듯이
이 작업을 수행할 수 있다고 해서 반드시 그렇게 해야 한다는 의미는 아닙니다.
공급업체 파일을 수정하는 것은 지속 가능한 솔루션이 아니라는 점을 기억하는 것이 중요합니다. Composer를 통해 종속성을 업데이트할 때마다 변경 사항이 손실됩니다.
더 나은 접근 방식은 패치 파일을 만드는 것입니다.패치 파일 생성
패치 파일 생성
패치 파일은 두 버전의 파일(기본적으로 "이전" 스냅샷과 "이후" 스냅샷) 간의 차이점을 포함하는 텍스트 파일입니다.
프로젝트 디렉토리에서 패치 파일을 보관할 폴더를 만듭니다.
mkdir -p 패치
patches/ 폴더 안에 fix-null-trim.patch라는 새 패치 파일을 만듭니다. 텍스트 편집기를 사용하여 이 작업을 수행할 수 있습니다.
터치 패치/fix-null-trim.patch
텍스트 편집기에서 fix-null-trim.patch를 열고 다음 콘텐츠를 추가하세요.
// this $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ); // to this $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );이 패치는 Composer에게 PrefixAllGlobalsSniff.php의 문제가 있는 줄을 null 병합 연산자(??)를 사용하여 Trim()에 null이 전달되는 것을 방지하는 더 안전한 버전으로 바꾸도록 지시합니다.
패치를 적용하도록 작곡가.json을 수정하세요.
프로젝트의 작곡가.json 파일을 엽니다. "extra" 섹션 아래에 다음 구성을 추가합니다. "extra" 섹션이 아직 존재하지 않으면 새로 만들어야 합니다.
// this $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ); // to this $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );이것은 Composer가 종속성을 설치하거나 업데이트할 때 wp-coding-standards/wpcs 패키지에 fix-null-trim.patch 파일을 적용하도록 지시합니다.
Composer 패치 플러그인 설치
작곡가는 cweagans/작곡가 패치가 필요합니다
패치 적용
작곡가 설치
설치하는 동안 Composer는 패치/ 폴더의 패치를 PrefixAllGlobalsSniff.php 파일에 적용합니다.
패치 파일을 생성하고 적용하면 소프트웨어 개발의 모범 사례를 준수하면서 수정 사항이 Composer 업데이트 전반에 걸쳐 지속되도록보장할 수 있습니다. PHP_CodeSniffer 및 WordPress 코딩 표준에 대한 업데이트를 정기적으로 모니터링하십시오. 이러한 문제는 향후 릴리스에서 해결될 수 있습니다. 이러한 사전 예방적 접근 방식은 코드 품질을 향상시킬 뿐만 아니라 PHP 8.x 환경에서 개발 워크플로도 개선합니다. 이 Gist에 패치 파일을 공유했습니다. 프로젝트에서 유사한 수정 사항을 구현하기 위한 참조로 자유롭게 사용하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3