>백엔드 개발 >PHP 튜토리얼 >WordPress 코딩 표준의 PHP_CodeSniffer Null Trim() 오류 수정

WordPress 코딩 표준의 PHP_CodeSniffer Null Trim() 오류 수정

Susan Sarandon
Susan Sarandon원래의
2024-10-16 06:11:30652검색

PHP 8.x를 사용하여 WordPress 프로젝트를 작업하는 동안 다음 오류가 발생할 수 있습니다.

심각한 오류: 포착되지 않은 PHP_CodeSnifferExceptionsRuntimeException: Trim(): 문자열 유형의 매개변수 #1($string)에 null을 전달하는 것은 /path/에서 더 이상 사용되지 않습니다...

이 오류는 PHP 8.x의 지원 중단 경고로 인해 발생합니다. 여기서는 Trim() 함수에 null을 전달하는 것이 더 이상 허용되지 않습니다. 특히 이 문제는 PHP_CodeSniffer 설정의 일부인 WPCS(WordPress Coding Standards) 스니프 내에서 발생합니다. 이 글을 쓰는 현재 최신 버전의 PHP_CodeSniffer 및 WordPress Coding Standards를 사용해도 이 문제가 지속됩니다.

PHP_CodeSniffer 및 WPCS 이해

PHP_CodeSniffer는 PHP 코드에서 지정된 규칙을 위반하는지 확인하여 개발자가 코딩 표준을 유지하도록 돕는 도구입니다. WordPress 코딩 표준(WPCS)은 WordPress 프로젝트에서 일관되고 깔끔한 코드를 작성하기 위한 일련의 지침을 제공합니다. 위에 언급된 오류는 일반적으로 PHP 동작 변경으로 인해 코드 조각이 이러한 표준을 준수하지 않음을 나타냅니다.

고정

이 문제를 해결하려면 문제를 일으키는 파일을 수동으로 수정하고, Trim()이 호출되는 줄을 찾은 다음, Trim() 호출 시 null 값이 올바르게 처리되도록 코드를 업데이트하면 됩니다.

예를 들어 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' ) );

그러나 소프트웨어 개발에 있어서 많은 결정이 그렇듯이 할 수 있다고 해서 반드시 해야 한다는 의미는 아닙니다.

Fixing PHP_CodeSniffer Null Trim() Errors in WordPress Coding Standards

이전 접근 방식으로 오류를 해결할 수는 있지만 공급업체 파일을 수정하는 것은 지속 가능한 솔루션이 아니라는 점을 기억하는 것이 중요합니다. Composer를 통해 종속성을 업데이트할 때마다 변경 사항이 손실됩니다.

그러면 더 나은 접근 방식은 패치 파일을 만드는 것입니다.

패치 파일 생성

다음은 문제에 대한 패치를 만들고 적용하는 방법에 대한 단계별 가이드입니다

패치 파일 생성

더 강력한 솔루션은 패치 파일을 만드는 것입니다. 이 방법을 사용하면 종속성을 설치하거나 업데이트할 때마다 변경 사항을 자동으로 적용할 수 있습니다.

패치 파일은 두 버전의 파일(기본적으로 "이전" 스냅샷과 "이후" 스냅샷) 간의 차이점이 포함된 텍스트 파일입니다.

프로젝트 디렉토리에 패치 파일을 저장할 폴더를 만듭니다.

mkdir -p 패치

patches/ 폴더 안에 fix-null-trim.patch라는 새 패치 파일을 만듭니다. 텍스트 편집기를 사용하여 이 작업을 수행할 수 있습니다.

터치 패치/fix-null-trim.patch

텍스트 편집기에서 fix-null-trim.patch를 열고 다음 콘텐츠를 추가하세요.

  --- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php
+++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/NamingConventions/PrefixAllGlobalsSniff.php
@@ -280,7 +280,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_prefixes = trim( PHPCSHelper::get_config_data( 'prefixes' ) );
+       $cl_prefixes = is_null( PHPCSHelper::get_config_data( 'prefixes' ) ) ? '' : trim( PHPCSHelper::get_config_data( 'prefixes' ) );

--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php
+++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/WP/I18nSniff.php
@@ -194,7 +194,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_text_domain = trim( PHPCSHelper::get_config_data( 'text_domain' ) );
+       $cl_text_domain = is_null(PHPCSHelper::get_config_data( 'text_domain' )) ? '' : trim( PHPCSHelper::get_config_data( 'text_domain' ) );

--- a/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php
+++ b/vendor/wp-coding-standards/wpcs/WordPress/Sniffs/Sniff.php
@@ -1144,7 +1144,7 @@

        // Original code with `trim()`
        // Update this line:
-       $cl_supported_version = trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );
+       $cl_supported_version = is_null(PHPCSHelper::get_config_data( 'minimum_supported_wp_version' )) ? '' : trim( PHPCSHelper::get_config_data( 'minimum_supported_wp_version' ) );

이 패치는 Composer에게 PrefixAllGlobalsSniff.php에서 문제가 있는 줄을 null 병합 연산자(??)를 사용하여 Trim()에 null이 전달되는 것을 방지하는 보다 안전한 버전으로 바꾸도록 지시합니다.

패치를 적용하도록 작곡가.json을 수정하세요.

다음으로, 종속성을 설치하거나 업데이트할 때마다 이 패치를 자동으로 적용하도록 Composer에 지시해야 합니다.

프로젝트의 작곡가.json 파일을 엽니다. "extra" 섹션 아래에 다음 구성을 추가합니다. "추가" 섹션이 아직 존재하지 않는 경우 새로 만들어야 합니다.

    json

    "extra": {
        "patches": {
            "wp-coding-standards/wpcs": {
                "Fix null trim() issue": "patches/fix-null-trim.patch"
            }
        }
    }

이것은 Composer가 종속성을 설치하거나 업데이트할 때 wp-coding-standards/wpcs 패키지에 fix-null-trim.patch 파일을 적용하도록 지시합니다.

Composer 패치 플러그인 설치

Composer를 통해 패치를 적용하려면 작곡가 패치 플러그인이 필요합니다. 설치하려면 다음 명령을 실행하세요.

작곡가는 cweagans/작곡가 패치가 필요합니다

패치 적용

이제 다음 명령을 실행하여 패치를 적용할 수 있습니다.

작곡가 설치

설치하는 동안 Composer는 patch/ 폴더의 패치를 PrefixAllGlobalsSniff.php 파일에 적용합니다.

패치 파일을 생성하고 적용하면 소프트웨어 개발 모범 사례를 준수하면서 Composer 업데이트 전반에 걸쳐 수정 사항이 유지되도록 보장할 수 있습니다. 이러한 문제는 향후 릴리스에서 해결될 수 있으므로 PHP_CodeSniffer 및 WordPress 코딩 표준에 대한 업데이트를 정기적으로 모니터링하세요.

이러한 사전 예방적 접근 방식은 코드 품질을 향상시킬 뿐만 아니라 PHP 8.x 환경에서 개발 워크플로도 개선합니다.

이 Gist에 패치 파일을 공유했습니다. 프로젝트에 유사한 수정 사항을 구현하기 위한 참조 자료로 자유롭게 사용하세요!

위 내용은 WordPress 코딩 표준의 PHP_CodeSniffer Null Trim() 오류 수정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.