일반적으로 사용되는 몇 가지 새로운 기능을 모아봤습니다. 좋아요를 눌러주세요! ! !
새 연산자
1. ??
$username = $_GET['user'] ?? '';
$username = isset($_GET['user']) ? 'user'] : 'nobody';
2. <=>
$number1 <=> $number2; $번호2 -1,0,1
새로운 함수
intdiv(dividend, divisor) — 나눗셈 결과 반올림
intdiv(3, 2) //1
정의는 배열을 정의할 수 있습니다
정의('ANIMALS', [
'dog',
'cat',
'bird'
]);
반환 유형 선언
function test() :int
{
return 1; //true
return '1'; //true
return 'string'; //거짓
}
스칼라 유형 선언
function test(string $name) :int
{
return 22;
}
문자열 정수 float boolean
핵심 오류를 포착할 수 있음
오류 계층
Throwable
오류
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
Exception
코어 정렬 최적화
php5: array(1=>0, 0=>0) //퀵 정렬(불안정한 정렬)
php7: array( 0=>0, 1=>0) //빠른 정렬 + 선택 정렬(안정 정렬)
php5 AST보다 추상 구문 번호(추상 snytax 트리)가 더 많습니다
PHP -> 파서 -> AST ->Opcodes -> 실행
성능이 향상되고 메모리 소비도 증가했지만 무시할 수 있습니다.
익명 클래스를 새 클래스로 전달할 수 있습니다. 익명 클래스를 인스턴스화합니다.
function getAnonymousClass($config) {
return new class($config) {};
}
임시로 하나의 메소드를 객체에 바인딩합니다. 그리고
$f = function() {
p($this->name);
};
클래스 F {
비공개 $name = 'F';
}
$f->call(new F);
통합 구문 변수
괄호는 왼쪽에서 오른쪽으로의 동작에 영향을 주지 않습니다
$a = 'b';
$b = ['1', '2', '3'];
var_dump($$a[1]);
var_dump(($$a) [1]);
php5:
주의 사항: 초기화되지 않은 문자열 오프셋: E:Program FilesphpStudyWWWtest.php의 4행에 1
주의: 정의되지 않은 변수: E:Program FilesphpStudyWWWtest.php의 온라인 4
NULL
구문 분석 오류: 구문 오류, 예기치 않은 '[' E:Program FilesphpStudyWWWtest.php 4행
php7: 문자열(1) "2" 문자열(1) "2"
표현식 PHP5 PHP7
$$foo['bar']['baz'] ${$foo['bar']['baz']} )['bar ']['baz']
$foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)[ 'baz']
$foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz' ]()
Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()
네임스페이스 정보
// PHP 7 이전 코드
use somenamespaceClassA;
use somenamespaceClassB;
use somenamespaceClassC를 C로 사용;
somenamespacefn_a 함수 사용;
somenamespacefn_b 함수 사용;
somenamespacefn_c 함수 사용;
const somenamespaceConstA 사용;
const somenamespaceConstB 사용;
const somenamespaceConstC 사용;
// PHP 7+ 코드
somenamespace{ClassA, ClassB, ClassC를 C로 사용};
somenamespace{fn_a, fn_b, fn_c} 사용 함수;
const somenamespace{ConstA, ConstB, ConstC 사용 };
목록 수정
1.
list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);
php5: array(3) { [0]=> int(3) [1]=> int(2) [2]=> > php7: 배열(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
2. NULL 값 할당은 허용되지 않습니다
list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;
php7은 치명적인 오류를 보고합니다: 빈 목록을 사용할 수 없습니다
3. 문자열 분할은 더 이상 지원되지 않습니다
$string = "xy";
list($x, $y) = $ string;
var_dump($x, $y);
php5: 문자열(1) "x" 문자열(1) "y"
php7: null null
foreach
변수 참조를 수정하면
$array = [0];
foreach ($array as &$val) {
var_dump($val);
배열의 루프에 영향을 미칩니다. $ 배열[1] = 1;
}
php5: int(0)
php7: int(0) int(1)
참고 소스 주소: http://www.php7.site/book/php7/variable-changes-22.html
PHP 성능 향상을 위한 팁: http://www.laruence.com/2015/12/04/3086.html