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 확장에 추가되었습니다. 이것은 다음 함수와 상수를 노출하여 수행되었습니다.
- ldap_parse_exop()
- ldap_exop()
- ldap_exop_passwd()
- ldap_exop_whoami()
- LDAP_EXOP_START_TLS
- LDAP_EXOP_MODIFY_PASSWD
- LDAP_EXOP_REFRESH
- LDAP_EXOP_WHO_AM_I
- LDAP_EXOP_TURN
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:// 스트림은 이제 '비밀번호' 컨텍스트 옵션을 허용합니다.