PHP7 수정된 함수
- parse_ini_file() 및 parse_ini_string()의 scanner_mode 매개 변수는 INI_SCANNER_TYPED 옵션을 추가합니다.
- unserialize()는 허용되는 클래스 목록을 지정하는 데 사용할 수 있는 두 번째 매개변수를 추가합니다. RFC: https://wiki.php.net/rfc/secure_unserialize
- proc_open()에 의해 열린 최대 제한은 이전에 16으로 하드 코딩되었습니다. 이제 이 제한은 제거되었으며 최대 수는 사용 가능한 메모리에 따라 다릅니다. PHP. Windows 버전에는 블록 단위로 강제 읽기 여부를 지정하는 데 사용할 수 있는 "blocking_pipes" 옵션이 추가되었습니다.
- array_column(): 이 함수는 이제 2차원 배열뿐만 아니라 객체 배열도 지원합니다.
- stream_context_create()windows는 array("pipe" => array("blocking" => <boolean> )을 수신할 수 있습니다. ) 매개변수.
- dirname()은 디렉터리 수준을 지정하는 데 사용할 수 있는 $levels 옵션을 추가합니다. dirname(dirname($foo)) => dirname($foo, 2);
debug_zval_dump() 인쇄할 때 long 대신 int를 사용하고 double 대신 float를 사용하세요.
PHP 필터링 unserialize()
PHP 7에는 unserialize()에 대한 필터링을 제공할 수 있는 기능이 추가되어 불법 데이터의 코드 삽입을 방지하고 보다 안전한 역직렬화된 데이터를 제공할 수 있습니다.
Example
<?php class MyClass1 { public $obj1prop; } class MyClass2 { public $obj2prop; } $obj1 = new MyClass1(); $obj1->obj1prop = 1; $obj2 = new MyClass2(); $obj2->obj2prop = 2; $serializedObj1 = serialize($obj1); $serializedObj2 = serialize($obj2); // 默认行为是接收所有类 // 第二个参数可以忽略 // 如果 allowed_classes 设置为 false, unserialize 会将所有对象转换为 __PHP_Incomplete_Class 对象 $data = unserialize($serializedObj1 , ["allowed_classes" => true]); // 转换所有对象到 __PHP_Incomplete_Class 对象,除了 MyClass1 和 MyClass2 $data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); print($data->obj1prop); print(PHP_EOL); print($data2->obj2prop); ?>
위 프로그램 실행의 출력 결과는 다음과 같습니다.
1 2