PHP7은 상당한 성능 개선과 새로운 기능을 제공할 뿐만 아니라 이전 버전의 일부 기능도 개선했습니다. 이 기사에서는 PHP7의 새로운 기능을 이해하고 논의하는 데 도움을 줄 것입니다.
1. 스칼라 유형 선언
우리는 PHP가 약한 유형의 프로그래밍 언어라는 것을 알고 있으므로 PHP7은 이러한 현상을 깨고 다음을 지원합니다. 스칼라 유형(int, float, string, bool)에 대한 선언 지원 엄격한 유형 검사가 필요한지 여부를 선언하는 선언(strict_types=1) 명령을 추가합니다.
declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7) declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7)
유효한 유형은 클래스/인터페이스 이름, self, array, callable, bool, float, int 및 string입니다.
2. NULL 병합 연산자
PHP7에 NULL 병합 연산자가 추가되었습니다. 이 “??”를 과소평가하지 마세요. 우리에게 매우 편리할 것입니다. 매개변수를 가져오고 비어 있는 경우 기본값을 제공할 수 있습니다. ?? 연산자는 왼쪽 값이 존재하고 NULL이 아닌 경우 어떻게 왼쪽을 반환하고, 그렇지 않으면 오른쪽 값을 반환합니다. 다음 코드를 통해 ?? 연산자의 위력을 경험해 보겠습니다.
<?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??> <?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??>
3. 익명 클래스
이름에서 알 수 있듯이 클래스 이름이 없으며 해당 선언과 인스턴스화를 동시에 지원합니다. 새로운 클래스를 통해 일부 "사용 후 굽기" 전체 클래스 정의를 대체하는 데 사용할 수 있습니다.
echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello! echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello!
4. 예외로 더 많은 오류를 처리할 수 있습니다.
PHP7에서 더 많은 오류는 포착 가능한 예외가 되며, 포착되지 않으면 개발자에게 반환됩니다. 오류입니다. 발견되면 프로그램 내에서 처리할 수 있는 Exception이 됩니다. 기본적으로 Error는 프로그램을 직접 중단시키는 반면, PHP7은 try/catch 블록을 통해 오류를 캡처하고 처리하여 프로그램이 계속 실행되도록 하여 프로그래머에게 보다 유연한 옵션을 제공합니다.
코드 예:
nonExistFunction($arg); // It will generate fatal error nonExistFunction($arg); // It will generate fatal error
이때 위 코드는 "치명적 오류: 비객체에서 멤버 함수 method() 호출"이라는 오류 메시지를 표시하며, 이 치명적인 오류 다음 코드 실행을 중지합니다.
따라서 코드를 계속 실행하려면 예외 처리를 통해 해결할 수 있습니다.
try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; } try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; }
5 비교 연산자 <=><와 결합됩니다. 🎜>
이는 별다른 설명이 필요하지 않습니다. 샘플 코드를 직접 살펴보면 이 연산자의 기능을 쉽게 이해할 수 있습니다.// PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; } // PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; }
6. 배열 상수 정의
과거에는 Define()을 사용하여 상수를 정의할 때 데이터 유형이 스칼라만 지원했지만, PHP7에서는 배열 유형은 상수로 지원됩니다.