> php教程 > php手册 > PHP7 새로운 기능 소개

PHP7 새로운 기능 소개

WBOY
풀어 주다: 2016-08-20 08:47:35
원래의
1468명이 탐색했습니다.

일반적으로 사용되는 몇 가지 새로운 기능을 모아봤습니다. 좋아요를 눌러주세요! ! !

새 연산자
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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿