PHP 8: 완전한 가이드

게시 됨: 2021-01-05

2020년 11월 26일, 우리는 PHP 8의 새로운 세계에 들어섰습니다. 모든 PHP 업데이트는 완전히 새로운 주요 기능을 제공합니다. 대부분의 일반 사용자에게 모든 업데이트가 중요한 것은 아니지만 대부분의 노련한 WordPress 개발자에게는 다른 업데이트도 너무 틈새 시장입니다.

그러나 작업 중인 개발 수준에 관계없이 속도 향상 및 기존 코드에 해를 끼칠 수 있는 주요 변경 사항과 같은 새 릴리스의 측면은 일상적인 워크플로에 부정적인 영향을 미칠 수 있습니다.

이 가이드에서는 이 새로운 PHP 8 릴리스에서 가장 중요한 변경 사항을 살펴보겠습니다. 본격적으로 살펴보겠습니다.

이 가이드에서

    PHP 업데이트가 발생하는 이유

    엔진으로서 PHP는 끊임없이 변화하고 있습니다. 코드를 최적화하고 PHP를 보다 쉽고 간단하게 작업할 수 있도록 새로운 비트가 항상 수정되거나 추가되고 있습니다.

    웹사이트 개발자와 함께 WordPress 플러그인 및 테마 제작자는 PHP 변경 사항이 발생했을 때 항상 최신 상태를 유지해야 합니다. 이렇게 하면 게임보다 한 발 앞서서 몇 가지 추가 업데이트가 발생한 후 문서 페이지를 넘길 필요가 없습니다.

    PHP의 각 새 버전은 개발 환경에 긍정적인 변화를 가져오기 위한 것입니다. 불행히도 특정 조정이 기존 코드를 손상시킬 수 있는 경우가 있습니다.

    호환되지 않거나 이전 버전 또는 오래된 속성이 새 PHP 업데이트와 충돌하면 전체 사이트가 손상되거나 사이트 영역이 작동을 멈출 수 있습니다.

    사용자 지정 코드 내에서 직접 해결할 수 있도록 릴리스된 잠재적인 주요 변경 사항을 아는 것이 좋습니다. 이것은 또한 더 최적화된 표현식이 있는 최신 코드를 사용하는 데 도움이 됩니다.

    그러나 경력에서 사용자 정의 코드를 하나도 건드리지 않았더라도 WordPress 대시보드에 업데이트된 PHP 버전에 대한 WordPress PHP 업데이트 필수 알림이 추가되면 업그레이드 여부를 결정해야 합니다. 아니면.

    변함없이, 그 질문에 대한 대답은 거의 항상 그렇습니다. 그러나 그렇게 하기 전에 주요 기능 변경 사항을 살펴보고 문제를 일으킬 수 있는 사항이 없는지 확인하는 것이 좋습니다. “미안한 것보다 안전한 것이 낫다”는 옛말처럼.

    PHP 8

    PHP 8 릴리스의 새로운 기능

    이번 PHP 릴리스는 결코 가장 큰 업데이트가 아닙니다. 그러나 우리가 살펴보아야 할 몇 가지 흥미로운 변화가 있습니다.

    어떤 면에서는 PHP 8이 상대적으로 작은 업데이트라는 것이 조금은 안도감이 듭니다. 즉, 기존 코드에 문제를 일으킬 수 있는 주요 변경 사항이 적습니다.

    즉, 현재 PHP 릴리스는 문제를 해결하는 데 시간을 할애하지 않고도 몇 가지 훌륭한 새 기능을 제공합니다.

    이 PHP 버전에 몇 가지 추가 변경 사항이 있지만 이 가이드에서는 가장 관련성이 높은 변경 사항을 다룹니다.

    JIT(Just In Time) 컴파일러

    PHP의 새 버전에 가장 흥미롭고 가장 큰 추가 사항은 Just In Time 또는 JIT 컴파일러입니다.

    아시다시피 PHP는 해석되는 언어입니다. 즉, 컴파일 후 미리 정해진 시작 시간에 실행되지 않고 실시간으로 실행됩니다.

    JIT가 PHP용 테이블에 가져오는 것은 컴파일된 코드입니다. 컴파일된 코드를 사용하면 특정 상황에서 성능이 향상됩니다.

    많은 PHP 개발자와 같다면 아마도 웹 앱으로 작업하고 있을 것입니다. 불행히도 JIT는 웹 앱에 별로 도움이 되지 않습니다. 그러나 다음과 같은 작업과 관련하여 크게 개선되었습니다.

    • 데이터 분석
    • 3D 렌더링
    • 일체 포함
    • 실행 시간이 오래 걸리는 추가 프로세스

    이것이 반드시 현재 가장 일반적인 PHP 애플리케이션은 아니지만, 미래를 내다보는 개발자는 확실히 PHP로 더 많은 영역을 확장하고 있습니다.

    JIT 컴파일러는 PHP가 그렇게 하도록 더 유연하게 만듭니다.

    사실, JIT는 PHP의 지평을 열고 새로운 목적을 위해 PHP를 사용하는 데 관심이 있는 새로운 개발자를 불러들이는 것이 거의 보장됩니다.

    기존 프로젝트의 경우 아마도 별로 도움이 되지 않을 것입니다.

    JIT를 구현하기 전에 격리된 환경에서 테스트하여 성능이 개선되었는지 확인하십시오.

    속성

    새 버전의 PHP는 속성을 지원합니다. 매개변수, 클래스 및 함수와 같이 코드에 추가하는 작은 메타데이터 조각입니다.

    즉, 더 이상 docblock을 표준 해결 방법으로 사용할 필요가 없습니다. 이것은 사소한 변경처럼 들리지만 실제로는 PHP 개발자의 삶을 훨씬 더 쉽게 만듭니다.

    이제 개별 코드 조각에 원하는 수의 속성을 추가한 다음 use 문으로 가져올 수 있습니다.

    속성에 매개변수를 추가할 수도 있습니다.

    코드에 속성을 추가하려면 속성 주위에 "보다 작음" 두 개와 "보다 큼" 기호 두 개를 추가하기만 하면 됩니다.

    속성은 이전 버전과 호환되지 않는다는 점에 유의하는 것이 중요합니다. 이전 버전의 PHP로 이식되면 오류가 발생합니다.

    아시다시피 docblock을 사용하는 표준 해결 방법은 완전히 작동합니다. 그러나 그것은 또한 항상 매우 투박했습니다. 새 버전의 PHP에서는 이제 속성을 직접 추가할 수 있습니다.

    PHP에 대한 작은 추가 기능이지만 그 의미는 엄청납니다.

    새 일치 표현식

    Switch 문은 if 문의 보다 강력한 버전이었습니다. 그러나 PHP의 새로운 일치 표현식은 그 개념을 더욱 향상시킵니다.

    이것은 더 짧고 더 엄격하여 버그를 더 잘 잡는 데 도움이 됩니다. 또한 조건을 결합하고 break 문이 필요하지 않습니다.

    이러한 방식으로 새로운 일치 표현식은 눈에 띄게 개선되었습니다.

    Switch는 여러 표현을 사용할 수 있기 때문에 여전히 match보다 이점이 있습니다. 그러나 그 외에도 일치 표현식에 대해 읽는 것을 고려하십시오.

    지금까지 그들은 당신이 활용하고 싶어할 수 있는 우수한 대체품처럼 보입니다.

    조합 유형

    PHP의 핵심 부분 중 하나는 유형입니다. 변수를 부울, 정수, null 등으로 할당합니다.

    이 PHP 릴리스 이전에는 단일 유형의 변수만 할당할 수 있었습니다. PHP 8에서는 두 가지 이상의 유형을 할당할 수 있습니다. 그렇지 않으면 공용체 유형이라고 합니다.

    예를 들어 float 및 integer 유형을 할당할 수 있으며 둘 중 하나를 사용할 수 있습니다. float|int와 같이 유형 사이에 한 줄로 지정됩니다.

    물론, 서로 배타적이기 때문에 void를 다른 유형과 결합할 수 없습니다.

    float|float와 같은 중복 또는 중복 유형도 작동하지 않습니다.

    이전 버전의 PHP에서는 PHPDoc 주석을 사용하여 기능적 통합 유형을 만들 수 있습니다. 이제 이러한 종류의 해결 방법을 건너뛰고 단순히 여러 유형의 변수를 할당할 수 있습니다.

    정적 반환 및 혼합 유형

    개발자로서 PHP 반환이 함수의 값을 반환하는 데 사용된다는 것은 일반적인 지식입니다. 이 릴리스 이전에는 정적 유형을 사용하는 옵션이 없었습니다.

    "Parent" 및 "self"는 유효한 반환 유형이었지만 "정적"은 그렇지 않았습니다. 이 문제는 새 PHP 버전에서 완전히 해결되었습니다.

    믿을 수 없을 정도로 일반적인 사용 사례는 아니지만 문제가 발생하면 액세스할 수 있게 되어 매우 기쁠 것입니다.

    새로운 혼합 유형도 찾을 수 있습니다. PHP에 존재하는 다른 모든 유형을 나타내기 때문에 의사 유형으로 더 정확하게 설명될 수 있습니다.

    여러 유형으로 작업해야 하는 상황을 처리할 때 가장 잘 사용됩니다.

    특정 유형을 선택하지 않으면 혼합이 기본값이 됩니다.

    종종 혼합보다는 새로운 공용체 유형을 사용하는 것이 좋습니다. 더 구체적으로 원할 가능성이 높기 때문입니다.

    그러나 이것은 여전히 ​​당신에게 목적이 있습니다.

    현실은 이들 중 어느 것도 노조 유형만큼 크지는 않지만 확실히 개선을 나타냅니다.

    새로운 PHP 8 함수

    새로운 버전의 PHP는 작업할 수 있는 새로운 기능과 함께 제공됩니다.

    • str_starts_withstr_ends_with – 문자열이 특정 줄로 끝나는지 또는 시작하는지 확인합니다.
    • fdiv – 0으로 나눌 때 일관되게 반응하는 나눗셈을 허용합니다.
    • str_containsstr_starts_withstr_ends_with유사 하지만 전체 문자열을 확인합니다.
    • get_debug_typegettype 과 유사하게 작동하지만 클래스 이름과 같은 추가 정보를 반환합니다.
    • get_resource_id – 데이터베이스 연결과 같은 리소스의 ID를 쉽게 얻을 수 있습니다.
    • preg_last_error_msg – 일반 언어로 읽을 수 있는 오류 메시지를 반환합니다.

    이러한 새로운 기능 중 일부를 테스트하여 이 기능을 최대한 활용하는 방법을 확인하십시오.

    명명된 인수

    누군가는 좋아할 수도 있고 누군가는 싫어할 수도 있습니다. 어느 쪽이든 명명된 인수는 새 버전의 PHP에 있습니다.

    인수를 사용하면 함수에 데이터를 전달할 수 있습니다. 명명된 인수를 사용하면 순서가 아닌 인수 이름을 전달하여 동일한 작업을 수행할 수 있습니다.

    여전히 정렬된 인수와 결합할 수 있습니다. 그러나 원하는 경우 선택적 매개변수를 건너뛸 수 있습니다.

    실질적으로 이것은 코드가 더 깨끗하고 오류가 거의 없음을 의미합니다. 결국 코드가 빡빡할수록 더 좋습니다. 작업하기가 훨씬 쉽습니다.

    이로 인해 인수 이름 변경 및 이전 버전과의 호환성 문제가 발생할 수 있으며, 이로 인해 이전 PHP 버전이 중단될 수 있습니다. 그러나 많은 개발자와 프로그래머에게 이러한 명명된 인수는 환영할 만한 변화입니다.

    PHP 8의 주요 변경 사항

    새로운 PHP 릴리스에는 몇 가지 주요 변경 사항이 있습니다. 이전 버전의 PHP로 업그레이드하거나 다시 이식하면 오류가 발생할 수 있습니다. 이 주요 변경 사항 목록을 살펴보고 어떤 변경 사항이 영향을 미치는지 확인하십시오.

    1. 엔진 경고는 알림, 경고 및 치명적인 오류와 같은 적절한 심각도 수준을 표시하도록 재분류되었습니다. 많은 프로젝트에 영향을 미치지 않는 사소한 주요 변경 사항이라고 생각하십시오.
    2. TypeError는 이제 내부 기능에 일상적으로 표시됩니다. 이것은 우리가 아직 깨닫지 못한 것보다 이전 버전과의 호환성에 더 많은 영향을 주지만 그럼에도 불구하고 확고한 변화입니다.
    3. 이전에 자동으로 설정되고 무시되었던 오류 보고 수준이 여러 번 변경되었습니다. 즉, 이전에는 볼 수 없었던 새로운 오류가 이제 전파되어야 합니다.
    4. 정렬이 더 안정적이고 안정적입니다. PHP 7에서 정렬에 큰 변화가 있었지만 최신 업데이트는 기존 코드에 대한 손상이 훨씬 적습니다.
    5. 네임스페이스 이름은 이제 단일 토큰입니다. 내부에 공백이 있으면 안 됩니다. 이 변경의 영향은 작고 수정하기 쉽습니다.
    6. 이전 버전의 PHP에서는 이름이 클래스와 일치하는 메서드가 생성자로 해석되었습니다. 새 버전에서는 __construct() 메서드를 사용해야 합니다.

    거의 문제를 일으키지 않는 수십 개의 다른 작은 업데이트가 있습니다. 일반적으로 현재 PHP 업데이트에는 많은 문제가 없습니다.

    WordPress에서 PHP 버전 업그레이드

    WordPress 개발자로서 PHP 버전을 최신 상태로 유지하는 것이 얼마나 중요한지 알고 있습니다. WordPress 사용자의 상당 부분이 여전히 PHP 5.6에서 실행되고 있다는 사실은 놀라운 일입니다.

    PHP 7.4를 실행하고 있고 완전히 최신 상태라고 생각했더라도 지금이 확실히 최신 PHP 버전으로 업데이트해야 할 때입니다.

    이전 버전의 PHP에서 WordPress 사이트를 실행하는 것은 주요 보안 위험입니다. 오래된 PHP 버전에는 해커가 정기적으로 이용하는 악용 가능한 보안 흐름이 있습니다.

    기존의 구멍을 패치할 수 있는 유일한 방법은 PHP를 항상 최신 상태로 유지하는 것입니다.

    또한 보안 보호를 강화하기 위해 강력한 WordPress 보안 플러그인을 실행하고 싶을 것입니다.

    보너스 콘텐츠 받기: WordPress 보안 가이드
    여기를 클릭하십시오

    PHP를 업데이트하는 또 다른 이유는 속도 때문입니다. 업데이트할 때마다 더 빠른 속도와 더 최적화된 기능이 제공됩니다. 물론 가장 눈에 띄는 차이점은 PHP 5.6과 7.4 사이였습니다. 하지만 최신 업데이트로 속도가 빨라지는 것을 확실히 느낄 수 있을 것입니다.

    호환성은 WordPress에서 PHP를 최신 상태로 유지하는 것이 중요한 마지막 이유입니다.

    PHP의 오래된 버전은 결함을 일으키거나 웹사이트를 완전히 망가뜨릴 수 있는 다양한 문제를 일으킬 수 있습니다.

    그 외에도 작동하려면 최신 PHP 버전이 필요한 테마와 플러그인이 있습니다.

    업데이트를 실행하기 전에 업데이트 실행 후 충돌이 발생할 경우에 대비하여 WordPress 백업 플러그인이 실행 중인지 확인하십시오.

    PHP 버전을 업그레이드하는 것은 아주 간단합니다. cPanel 또는 사용 중인 호스트의 관리 대시보드에 로그인하고 PHP 버전 관리자를 찾아 최신 버전을 선택하기만 하면 됩니다. 그러나 업데이트를 실행하기 전에 호스트가 최신 PHP 업데이트를 지원하는지 확인하십시오. 일부는 이전 소프트웨어에서 실행 중일 수 있습니다.

    PHP 및 WordPress에 대한 추가 정보는 WordPress 및 PHP 8에 대한 공식 WordPress.org 문서를 확인하십시오.

    마무리: PHP 8과 PHP의 미래

    PHP 7.0 – 7.4와 같은 괴물 업데이트는 아니지만 PHP 8에는 여전히 활용할 수 있는 많은 것들이 있습니다.

    JIT 컴파일러에서 새 속성, 일치 표현식 및 기타 개발자를 위한 유용한 기능에 이르기까지 이 중요한 새 버전의 PHP에 익숙해져야 할 때입니다.

    이 업데이트의 어떤 부분이 일상적인 워크플로에서 가장 많이 사용될 것으로 예상하십니까?