PHP 7.2.0의 새롭고 향상된 기능
게시 됨: 2018-03-03PHP 7.2.0의 새 릴리스에는 많은 추가 기능이 포함되어 있습니다. 더 많은 기능, 새로운 개선 사항 및 더 나은 기능을 제공합니다. 이를 통해 사용자는 더 나은 코드를 작성하고 이전에는 볼 수 없었던 몇 가지 흥미로운 언어 기능을 사용할 수 있습니다. 이 포스트에서는 PHP의 최신 버전에 도입된 최신 측면을 살펴볼 것입니다.
업데이트는 많은 새로운 개선 사항을 제공합니다. 더 나은 코딩을 보장하는 많은 기능이 함께 제공됩니다. PHP 7.2.0의 새로운 기능은 다음과 같습니다.
- 객체 타이핑 힌트
- 셀 수 없는 다양한 물체의 세기
- 배열 캐스트/객체의 숫자 키 변환
- Mcrypt 확장이 제거됨
- 비밀번호 해시의 Argon2
- 객체로서의 HashContext
- 다양한 정상 값에 대한 더 나은 TLS 상수
- 새로운 나트륨 확장
아시다시피 웹 개발자는 일반적으로 PHP 언어를 사용하는 것을 좋아하거나 싫어합니다. PHP 사용을 진정으로 즐기는 사람이라면 누구나 이 새로운 코딩 솔루션을 좋아할 것입니다.
PHP로 작업하는 것을 좋아하는 웹 개발자라면 PHP 7.2.0 업데이트의 가장 중요한 새 기능에 대해 논의하는 동안 계속 읽으십시오.
PHP 7.2.0의 핵심 개선 사항
다음은 최신 PHP 업데이트의 핵심 개선 사항입니다.
특성 속성 버그에 대한 솔루션
PHP 7.2.0이 출시되기 전까지는 특성 속성 버그가 수정되지 않았습니다. 최신 업데이트에서 특성이 속성을 정의하는 경우 클래스는 더 호환 가능하지 않는 한 동일한 이름을 가진 속성을 정의할 수 없습니다(동일한 초기 값 및 가시성). 그렇지 않으면 치명적인 오류가 발생합니다.
따라서 PHP 7 및 PHP 7.1과 달리 이제 치명적인 오류가 발생할 것으로 예상할 수 있습니다. 이 동작은 최근 PHP 업데이트에서 수정되었으며 이제 PHP 문서에 나와 있는 대로 작동합니다. 이제 엄격한 비교를 수행할 수 있습니다. PHP 7.2에서 스크립트를 실행하면 치명적인 오류에 대한 알림을 받게 됩니다.
반환 유형 선언
PHP 7의 최근 업데이트는 반환 유형 선언에 대한 추가 지원을 추가합니다. 인수 유형 선언과 마찬가지로 이 선언 유형은 함수에서 반환될 가능성이 있는 값의 유형도 명시합니다. 반환 유형 선언의 경우 인수 유형 선언과 동일한 유형이 제공됩니다.
PHP 7.2.0에서 사용자는 객체 데이터 유형의 관점에서 반환 유형 선언을 사용할 수 있습니다.
또한 엄격한 형식 지정은 반환 형식 선언에도 영향을 줍니다. 기본 약한 모드를 고려할 때 반환된 모든 값은 정확한 유형으로 강제 변환됩니다(그 유형이 다르고 아직 해당 유형이 아닌 경우). 그러나 강력한 모드에서 반환되는 모든 값은 정확한/올바른 유형이어야 합니다. 그렇지 않으면 TypeError 가 수신됩니다.
그러나 자식 메서드는 부모 메서드를 재정의할 때 반환 형식 선언이 부모 메서드의 선언과 일치해야 합니다. 그러나 반환 유형이 부모 메서드에 의해 정의되지 않은 경우 자식 메서드가 이를 정의할 수 있습니다.
생성기 반환 표현식
PHP의 이 기능은 생성기 기능이라고 하는 PHP 5.5에서 릴리스된 기능을 기반으로 합니다. 이는 return 문을 생성기에서 활용하고 최종 표현식을 반환할 수 있도록 합니다. 단, 참조에 의한 반품은 제한됩니다. 값은 생성기가 값 생성을 완료한 경우에만 사용되는 새로운 Generator " getReturn()" 메서드를 사용하여 얻을 수 있습니다.
그럼에도 불구하고 생성기를 사용하여 최종 값을 명확하게 반환하는 기능은 확실히 편리한 기능입니다. 이것은 생성기에 의해 최종 값이 완전히 반환되도록 허용하기 때문입니다. 생성기를 수행하는 클라이언트 코드에서 특히 처리할 수 있습니다. 이에 비해 이것은 클라이언트 코드가 최종 값이 생성되었는지 여부를 먼저 확인한 다음 값을 특별히 처리하도록 하는 것보다 훨씬 간단합니다.
세션 옵션
Session_start() 는 이제 php.ini에 설정된 다양한 세션 구성 지시문을 무시하는 많은 옵션을 인식합니다.
이 옵션은 또한 session.lazy_write 를 용이하게 하도록 확장되었습니다. 이 옵션은 기본적으로 켜져 있고 PHP가 세션 데이터 및 read_and_close 변경으로 모든 세션 파일을 덮어쓰게 합니다. 세션 데이터를 읽은 다음 변경되지 않은 상태로 세션을 즉시 닫아야 함을 확인하기 위해 session_start() 에만 전달할 수 있는 옵션입니다.
PHP 7.2.0의 보안 개선 사항
다음은 PHP 7.2.0에서 구현된 최근 보안 개선 사항입니다.
비밀번호 해시의 아르곤 2 알고리즘
2005년 Password Hashing Competition에서 우승한 Argon 2는 강력한 해싱 알고리즘입니다. Argon2는 보편적인 인터넷 표준으로 인정받고 있습니다. 현재 이 알고리즘은 다른 해싱 알고리즘인 Bcrypt보다 비용 효율적이고 안전한 것으로 간주됩니다. 새로 통합된 Argon2는 함수 - password_hash()를 통해 사용할 수 있습니다.
Bcrypt는 하나의 비용 요소만 고려하지만 새로운 Argon2는 다음 세 가지 비용 요소를 고려합니다.
- 시간 비용 - 해싱 알고리즘의 반복 횟수를 정의합니다.
- 메모리 비용 - 해싱 중에 사용해야 하는 KiB 숫자를 정의합니다.
- 병렬 처리 요소 - 해싱 중에 사용되는 병렬 스레드 수를 설정합니다.
기본 비용 요소는 다음과 같이 세 가지 새로운 상수로 정의됩니다.
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- 비밀번호_ARGON2_DEFAULT_MEMORY_COST
- PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodium은 Mcyrpt를 대체합니다.
PHP 7.2.0의 또 다른 주요 개선 사항은 PHP 코어에서 기존 Mcrypt 암호화 라이브러리를 제거하고 Libsodium을 추가한 것입니다.
Mcrypt는 포기웨어 및 언어 성장에 대한 제한으로 간주되었습니다. 이것이 PHP 7.2.0에서 Libsodium으로 대체된 이유입니다. Libsodium은 효율적인 타원 곡선 암호화와 함께 확실한 암호화를 제공하는 고급 암호화 라이브러리입니다.
Libsodium은 보안 전문가가 부채널 취약점을 방지하기 위해 구현하는 신중하게 선택한 알고리즘으로 구성됩니다. 즉, Libsodium은 암호 해독, 암호화, 암호 해싱, 서명 등을 위한 교차 언어 및 교차 플랫폼 라이브러리입니다.
더 이상 사용되지 않는 기능 및 기능
다음은 PHP 8.0 릴리스 전에 제거될 것으로 예상되는 PHP 7.2.0의 사용되지 않는 기능 및 기능 중 일부입니다.
Gmp_random() 은 플랫폼 종속 기능으로 간주되며 더 이상 사용되지 않을 수 있습니다. 대신 gmp_random_rage() 및 gmp_random_bits() 가 사용됩니다.
(설정되지 않음) 캐스트 는 일반적으로 null을 반환하므로 쓸모없는 것으로 간주되는 또 다른 표현식입니다.
Each() 는 배열처럼 foreach() 를 반복하는 데 사용되지만 foreach() 는 속도가 더 빠르기 때문에 선호됩니다.
PHP 5.1의 spl_autoload_register 는 _autoload 기능을 대체했습니다. 그러나 이제 컴파일 중에 함수가 발생하면 사용 중단이 발생할 수 있습니다.
mbstring .fucc_overload 도 사용 중단으로 설정되었습니다.
assert() 함수는 주어진 주장을 확인하고 FALSE 결과가 있는 경우 적절한 조치를 취합니다. 문자열 인수와 함께 assert()를 사용하면 RCE 취약성이 발생하므로 더 이상 사용되지 않습니다.
$php_errormsg 변수 는 치명적이지 않은 오류가 수신되는 동안 로컬 범위에 빌드됩니다. 그러나 이제 PHP 7.2.0 릴리스에서는 error_clear_last 및 error_get_last 가 대신 사용됩니다.
$errcontext는 이 기능으로 인해 최적화 문제가 발생하므로 더 이상 사용되지 않을 수 있습니다. $errcontext는 현재 범위의 모든 개체와 참조를 수정하는 데 사용되기 때문에 이 기능은 거의 사용되지 않습니다.
Create_function() 에는 많은 보안 문제가 있습니다. 또한 메모리 사용량과 나쁜 성능 문제도 있습니다.
WordPress 개발자가 PHP 7.2.0을 사용해야 하는 이유는 무엇입니까?
최근 PHP 업그레이드는 새로운 기능과 향상된 보안 조치를 제공합니다. 여기에는 최신 암호화, 핵심 기능 추가, 다양한 사이트의 더 빠른 로드 속도와 같은 요소가 포함될 수 있습니다.
PHP 사용의 이점
PHP는 거의 모든 데이터베이스 및 서버 글로벌 표준(예: PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server 및 Informix)과 함께 사용할 수 있는 고도로 호환되는 언어입니다. 오픈 소스 커뮤니티에서 지원하는 빠른 성능을 제공합니다.
파일 생성 및 동적 페이지 생성과 같은 다양한 용도로 사용됩니다. PHP를 사용하면 사이트 데이터베이스에서 정보를 관리하고 저장할 수 있습니다. 사용자가 보안 기능을 사용하여 데이터를 암호화하고 웹사이트에 대한 무단 액세스를 제한할 수 있습니다.
PHP는 Yahoo, Facebook 및 Wikipedia와 같은 많은 유명 웹사이트에서 사용됩니다.
더욱 중요한 것은 PHP 7.2.0의 최신 업데이트는 중요한 보안 개선 사항, 흥미로운 새 기능 및 성능 향상을 제공한다는 것입니다.
PHP 7.2.0의 성능
Phoenix 벤치마크에 따르면 PHP 7.2.0은 7.1보다 13%, 7.0보다 거의 20% 빠릅니다. PHP 2.6(여전히 PHP 사용자의 40%가 사용)과 비교하면 거의 25% 더 빠릅니다.
이러한 통계와 결과를 뒷받침하는 많은 테스트가 있습니다. 공식 PHP 벤치마크에 따르면 PHP 7은 5.6보다 2배 효율적이고 2배 빠릅니다. PHP 7은 대기 시간이 절반입니다. 또한 Kinsta와 같은 다른 벤치마크에서는 PHP 7이 이전 버전보다 최대 3배 더 빠를 수 있다고 제안합니다.
위에서 논의한 바와 같이 PHP 7.2.0의 성능이 향상된 주된 이유는 고급 기능을 포함하고 이전 기능을 사용하지 않기 때문입니다. 이것이 바로 이 PHP 버전이 WordPress 사용자에게 완벽하게 맞는 이유입니다. 그러나 개발자는 코드를 확인하고 사용되지 않는 기능을 업데이트하여 모든 것이 호환되는지 확인해야 합니다.
PHP 7.2.0의 보안 지원
PHP 7.2.0은 더 이상 보안 지원을 제공하지 않습니다. 그러나 중요한 지원은 2018년 말까지 계속 제공됩니다. PHP 커뮤니티는 더 이상 사소한 문제 및 버그에 대한 지원을 제공하지 않습니다. 좋은 소식은 PHP 7.2.0의 최신 업데이트를 통해 고급 보안 업데이트가 제대로 작동하고 프로젝트가 PHP 커뮤니티에서 지속적으로 지원될 것이라는 점입니다.
Libsodium은 이전 PHP에서 PHP 7.2.0으로 마이그레이션된 가장 중요하고 가장 개선된 기능입니다. 다행히 Libsodium은 업데이트하기가 매우 쉽습니다.
PHP 7.2.0으로 업데이트하려는 경우 코드가 통합 및 단위 테스트로 구성되어 있는지 확인하십시오. 이러한 테스트는 실제 환경에서 버그로 나타나기 전에 애플리케이션 관련 문제를 파악하는 데 도움이 됩니다.
간단히 말해서
PHP 7.2.0은 PHP 5.6과 같은 이전 버전에 비해 확실히 주요 업그레이드입니다. 코드를 PHP 5.6에서 PHP 7로 업그레이드할 때 코드가 의존하는 라이브러리와 코드 자체에서 비호환성을 발견할 수 있습니다. 그러나 PHP 7.2 채택의 이점은 귀하의 노력을 가치 있게 만들 것입니다.
PHP 7.2는 이전 버전의 PHP보다 훨씬 빠르기 때문에 사용자는 PHP 언어의 고급 코드를 구현하여 웹사이트 사용자에게 향상된 서비스를 제공할 수 있습니다.
새로운 PHP 7.2로 전환할 준비가 되셨습니까? 아직 업데이트하지 않았다면 전환을 시작하기에 좋은 시기입니다. 코드를 확인하고 스크립트를 업그레이드할 때입니다.
아래 의견 섹션에서 PHP 7.2.0의 새로운 개선된 기능을 어떻게 찾았는지 알려주십시오!