PHP7.2 새로운 기능

New object type

모든 개체의 (반공변) 매개변수 입력 및 (공변) 반환 유형에 사용할 수 있는 새 유형인 개체가 도입되었습니다.

                  
<?php

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());
                  
                

Extension loading by name

공유 확장자는 더 이상 파일 확장자(Unix의 경우 .so, Windows의 경우 .dll)를 지정할 필요가 없습니다. 이것은 php.ini 파일과 dl() 함수에서 활성화됩니다.


Abstract method overriding

이제 추상 클래스가 다른 추상 클래스를 확장할 때 추상 메서드를 재정의할 수 있습니다.

                  
<?php

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;
}
                  
                

Sodium is now a core extension

최신 Sodium 암호화 라이브러리는 이제 PHP의 핵심 확장이 되었습니다.

전체 기능 참조는 Sodium 장을 참조하십시오.


Password hashing with Argon2

Argon2는 다음 상수가 노출된 암호 해싱 API에 추가되었습니다.

  • PASSWORD_ARGON2I
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_THREADS

Extended string types for PDO

에뮬레이션 준비 시 국가별 문자 유형을 지원하도록 PDO의 문자열 유형이 확장되었습니다. 이것은 다음 상수로 수행되었습니다.

  • PDO::PARAM_STR_NATL
  • PDO::PARAM_STR_CHAR
  • PDO::ATTR_DEFAULT_STR_PARAM

이러한 상수는 PDO::PARAM_STR과 비트 OR'하여 사용됩니다.

                  
<?php

$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
                  
                

Additional emulated prepares debugging information for PDO

PDOStatement::debugDumpParams() 메서드는 DB로 전송되는 SQL을 포함하도록 업데이트되었으며, 여기서 전체 원시 쿼리(바운딩된 값으로 교체된 자리 표시자 포함)가 표시됩니다. 이것은 에뮬레이트된 준비 디버깅을 돕기 위해 추가되었습니다(따라서 에뮬레이트된 준비가 켜져 있는 경우에만 사용할 수 있음).


Support for extended operations in LDAP

EXOP에 대한 지원이 LDAP 확장에 추가되었습니다. 이것은 다음 함수와 상수를 노출하여 수행되었습니다.


Address Information additions to the Sockets extension

소켓 확장은 이제 주소 정보를 조회하고 연결하고 바인딩하고 설명할 수 있습니다. 이를 위해 다음 4가지 기능이 추가되었습니다.


Parameter type widening

재정의된 메서드 및 인터페이스 구현의 매개 변수 유형을 이제 생략할 수 있습니다. 매개변수 유형이 반공변이기 때문에 이것은 여전히 ​​LSP를 준수합니다.

                  
<?php

interface A
{
    public function Test(array $input);
}

class B implements A
{
    public function Test($input){} // type omitted for $input
}
                  
                

Allow a trailing comma for grouped namespaces

이제 PHP 7.0에 도입된 그룹 사용 구문에 후행 쉼표를 추가할 수 있습니다.

                  
<?php

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};
                  
                

proc_nice() support on Windows

proc_nice() 함수는 이제 Windows에서 지원됩니다.


pack() and unpack() endian support

pack()unpack() 함수는 이제 리틀 및 빅 엔디안 모두에서 float 및 double을 지원합니다.


Enhancements to the EXIF extension

EXIF 확장은 훨씬 더 다양한 형식을 지원하도록 업데이트되었습니다. 즉, exif_read_data() 함수로 이미지를 구문 분석할 때 형식별 태그가 올바르게 변환됩니다. 이제 다음과 같은 새로운 형식이 지원됩니다.

  • Samsung
  • DJI
  • Panasonic
  • Sony
  • Pentax
  • Minolta
  • Sigma/Foveon
  • AGFA
  • Kyocera
  • Ricoh
  • Epson

EXIF 함수 exif_read_data()exif_thumbnail()은 이제 첫 번째 인수로 스트림 전달을 지원합니다.


New features in PCRE

  • PCRE_DUPNAMES 설정을 위한 J 수정자가 추가되었습니다.

SQLite3 allows writing BLOBs

SQLite3::openBlob()은 이제 쓰기 모드에서 BLOB 필드를 열 수 있습니다. 이전에는 읽기 모드만 지원되었습니다.


Oracle OCI8 Transparent Application Failover Callbacks

Oracle Database TAF(Transparent Application Failover) 콜백에 대한 지원이 추가되었습니다. TAF를 사용하면 연결이 끊어졌을 때 PHP OCI8 애플리케이션이 사전 구성된 데이터베이스에 자동으로 다시 연결할 수 있습니다. 새로운 TAF 콜백 지원을 통해 PHP 애플리케이션은 장애 조치 중에 재연결을 모니터링하고 제어할 수 있습니다.


Enhancements to the ZIP extension

암호화된 아카이브에 대한 읽기 및 쓰기 지원이 추가되었습니다(libzip 1.2.0 필요).

ZipArchive 클래스는 이제 Countable 인터페이스를 구현합니다.

zip:// 스트림은 이제 '비밀번호' 컨텍스트 옵션을 허용합니다.