PHP7.3 새로운 기능

PHP Core

More Flexible Heredoc and Nowdoc Syntax

문서 문자열의 닫기 마커 뒤에 세미콜론이나 줄 바꿈이 더 이상 필요하지 않습니다. 또한 닫는 마커가 들여쓰기될 수 있으며, 이 경우 문서 문자열의 모든 줄에서 들여쓰기가 제거됩니다.

Array Destructuring supports Reference Assignments

배열 구조 해제는 이제 [&$a, [$b, &$c]] = $d 구문을 사용하여 참조 할당을 지원합니다. list()에서도 동일하게 지원됩니다.

Instanceof Operator accepts Literals

instanceof는 이제 리터럴을 첫 번째 피연산자로 허용하며, 이 경우 결과는 항상 false입니다.

CompileError Exception instead of some Compilation Errors

ParseError가 상속하는 새로운 CompileError 예외가 추가되었습니다. 소수의 컴파일 오류는 이제 치명적인 오류를 생성하는 대신 CompileError를 발생시킵니다. 현재 이것은 TOKEN_PARSE 모드에서 token_get_all()이 던질 수 있는 컴파일 오류에만 영향을 주지만 앞으로 더 많은 오류가 변환될 수 있습니다.

Trailing Commas are allowed in Calls

이제 함수 및 메서드 호출에서 후행 쉼표가 허용됩니다.

Argon2id Support

--with-password-argon2[=dir] 구성 인수는 이제 password_hash(), password_verify(), password_get_info()password_needs_rehash() 함수에서 Argon2i 및 Argon2id 해시를 모두 지원합니다. PASSWORD_ARGON2ID 상수를 사용하여 암호를 해시하고 확인할 수 있습니다. password_*() 함수에서 Argon2i 및 Argon2id를 모두 지원하려면 이제 PHP가 libargon2 참조 라이브러리 ≥ 20161029에 대해 링크되어야 합니다.


FastCGI Process Manager

FPM 로깅을 사용자 지정하기 위해 새로운 옵션이 추가되었습니다.

    log_limit
    이 전역 옵션은 줄 바꿈 없이 1024자보다 긴 메시지를 기록할 수 있는 기록된 줄에 대한 로그 제한을 설정하는 데 사용할 수 있습니다. 또한 다양한 포장 문제를 수정합니다.
    log_buffering
    이 전역 옵션을 사용하면 추가 버퍼링 없이 실험적 로깅이 가능합니다.
    decorate_workers_output
    이 풀 옵션을 사용하면 catch_workers_output이 활성화된 경우 작업자 출력에 대한 출력 장식을 비활성화할 수 있습니다.

BC Math Functions

이제 bcscale()을 getter로 사용하여 현재 사용 중인 스케일을 검색할 수 있습니다.


Lightweight Directory Access Protocol

LDAP 제어에 대한 전체 지원이 LDAP 쿼리 함수 및 ldap_parse_result()에 추가되었습니다.


Multibyte String Functions

Full Case-Mapping and Case-Folding Support

전체 케이스 매핑 및 케이스 접기에 대한 지원이 추가되었습니다. 단순 케이스 매핑과 달리 전체 케이스 매핑은 문자열의 길이를 변경할 수 있습니다. 예를 들어:

                  
  <?php
  mb_strtoupper("Straße");
  // Produces STRAßE on PHP 7.2
  // Produces STRASSE on PHP 7.3
  ?>
                  
                

다른 대소문자 매핑 및 접기 모드는 mb_convert_case()를 통해 사용할 수 있습니다.

  • MB_CASE_LOWER (used by mb_strtolower())
  • MB_CASE_UPPER (used by mb_strtoupper())
  • MB_CASE_TITLE
  • MB_CASE_FOLD
  • MB_CASE_LOWER_SIMPLE
  • MB_CASE_UPPER_SIMPLE
  • MB_CASE_TITLE_SIMPLE
  • MB_CASE_FOLD_SIMPLE (used by case-insensitive operations)

무조건적이고 언어에 구애받지 않는 전체 대/소문자 매핑만 수행됩니다.

Case-Insensitive String Operations use Case-Folding

대소문자를 구분하지 않는 문자열 작업은 이제 비교 중에 대소문자 매핑 대신 대소문자 접기를 사용합니다. 이것은 이제 더 많은 문자가 동일한 것으로 간주됩니다(대소문자 구분 안 함).

MB_CASE_TITLE performs Title-Case Conversion

MB_CASE_TITLE이 있는 mb_convert_case()는 이제 Cased 및 CaseIgnorable 파생 유니코드 속성을 기반으로 제목 대소문자 변환을 수행합니다. 특히 이것은 따옴표와 아포스트로피 처리를 향상시킵니다.

Unicode 11 Support

Multibyte String 데이터 테이블이 유니코드 11용으로 업데이트되었습니다.

Long String Support

Multibyte String Functions는 이제 2GB보다 큰 문자열을 올바르게 지원합니다.

Performance Improvements

Multibyte String 확장의 성능은 전반적으로 크게 향상되었습니다. 가장 큰 개선 사항은 케이스 변환 함수입니다.

Named Captures Support

mb_ereg_* 함수는 이제 명명된 캡처를 지원합니다. mb_ereg()와 같은 일치 함수는 이제 PCRE와 유사하게 그룹 번호와 이름을 사용하여 명명된 캡처를 반환합니다.

                  
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
                  
                

또한 mb_ereg_replace()는 이제 대체 문자열에서 명명된 캡처를 참조하기 위해 \k<> 및 \k'' 표기법을 지원합니다.

                  
<?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
                  
                

\k<> 및 \k''는 번호가 매겨진 참조에도 사용할 수 있으며 9보다 큰 그룹 번호에서도 작동합니다.


Readline

complete_append_character 및 completion_suppress_append 옵션에 대한 지원이 readline_info()에 추가되었습니다. 이 옵션은 PHP가 libreadline(libedit가 아닌)에 연결된 경우에만 사용할 수 있습니다.