PHP7.4의 새로운 기능과 버려진 기능 요약
PHP7.4 새로운 기능
PHP7.4가 지난달 28일 출시되었습니다. 몇 가지 새로운 기능을 가져왔습니다. 이를 통해 우리는 더 적은 양의 코드를 작성할 수 있습니다.
1. 속성에 정규화된 유형 추가
<?php class User { public int $age; public string $name } $user = new User(); $user->age = 10; $user->name = "张三"; //error $user->age = "zhang";//需要传递int
2. 화살표 함수
이 기능은 기본적으로 Js의 ES6 구문을 참조합니다. 이를 통해 우리는 더 적은 양의 코드를 작성할 수 있습니다. 코드에 fn 함수가 있는 경우. 충돌할 수 있음
<?php $factor = 10; $nums = array_map(fn($n)=>$n * $factor,[1,2,3]);//[10,20,30] //之前的写法 $nums = array_map(function($num)use($factor){ return $num * $factor; },[1,2,3])
3. 제한된 반환 유형 공분산 및 매개변수 유형 반공분산
전체 공분산/반공분산 지원은 자동 로딩을 사용할 때만 제공됩니다. 단일 파일 내에서는 모든 클래스를 참조하기 전에 사용할 수 있어야 하므로 비순환 유형 참조만 사용할 수 있습니다.
<?php class A {} class B extends A {} class Producer { public function method(): A {} } class ChildProducer extends Producer { public function method(): B {} } ?>
4. 배열 압축해제
배열 연산자를 사용하여... 배열을 압축해제하세요. 이 기능은 js에서 흡수되어야 합니다. 예시
<?php $parts = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon'];//['banana', 'orange', 'apple', 'pear', 'watermelon']; //老的写法 $fruits = array_merge(['banana', 'orange'],$parts,['watermelon']);
5를 참조하세요. Null 병합 연산자 할당
<?php $array['key'] ??= computeDefault(); // 老的写法 if (!isset($array['key'])) { $array['key'] = computeDefault(); } ?>
6. 숫자 리터럴 구분 기호
숫자 리터럴은 숫자 사이에 밑줄을 포함할 수 있습니다.
<?php 6.674_083e-11; // float 299_792_458; // decimal 0xCAFE_F00D; // hexadecimal 0b0101_1111; // binary ?>
7. __toString()에서 예외 발생 허용
이제 __toString()에서 예외 발생이 허용됩니다. 이전에는 문자열 변환 시 복구 가능한 치명적인 오류가 오류 예외로 변환되었습니다.
8 결과가 어떨지 여쭤보니 걱정되네요. 사실 프로덕션에서는 다들 이렇게 쓰지는 않거든요. 2. 중괄호를 사용하여 배열 인덱스에 액세스<?php filter_var(1.00,FILTER_VALIDATE_FLOAT); filter.filters.validate솔직히 처음 봐서 버려서 사람들이 이런 식으로 사용하지 않는다는 걸 보여줍니다. 3. real 및 is_real 실수
<?php strip_tags($str,['p','a','div']); //老的写法 strip_tags($str,"<p><a><div>");4. parent 키워드는 상위 클래스가 없는 클래스에서 사용됩니다.부모 클래스가 없는 클래스에서 parent를 사용하면 컴파일 오류가 발생합니다.
<?php 1 ? 2 : 3 ? 4 : 5; // deprecated (1 ? 2 : 3) ? 4 : 5; // ok 1 ? 2 : (3 ? 4 : 5); // ok ?>5.money_format 기능은 더 이상 사용되지 않으며 numberFormater6으로 대체되었습니다. 확장 프로그램
1.Firebird/Interbase
2.Recode
3.WDDX