>백엔드 개발 >PHP7 >PHP 7.x 각 버전의 새로운 기능을 살펴보겠습니다.

PHP 7.x 각 버전의 새로운 기능을 살펴보겠습니다.

coldplay.xixi
coldplay.xixi앞으로
2021-02-01 09:42:402274검색

PHP 7.x 각 버전의 새로운 기능을 살펴보겠습니다.

PHP 7 각 버전의 새로운 기능. PHP7 이상에서만 가능한 글쓰기 방법이라고 하더군요. 그는 모른다고 말했다.

저는 마음 속으로 중얼거리며 이 블로그를 쓰기로 했습니다.

PHP7은 기본에 더해 현대적인 PHP여야 합니다. PHP7에서는 강력한 유형 정의와 결합된 비교 연산자와 같은 일부 문법적 작성 방법인 Define()이 배열 및 기타 기능을 정의할 수 있기 때문입니다. 정식 소개는 PHP7.0부터 시작됩니다. 향후 새로운 버전이 추가될 예정이며, 순차적으로 추가될 예정입니다. 자, 시작해 보겠습니다

PHP 7.0

스칼라 유형 선언


스칼라 유형이란 무엇인가요?

네 가지 스칼라 유형:

boolean(부울 유형)

정수(정수 유형) float(부동 소수점 유형, double이라고도 함) 문자열(문자열)

두 가지 복합 유형:

배열(배열)

객체
리소스 외부 리소스에 대한 참조를 보유하는 특수 변수입니다. 리소스는 특화된 기능을 통해 생성되고 사용됩니다. 리소스 유형 변수는 파일 열기, 데이터베이스 연결, 그래픽 캔버스 영역 등을 위한 특수 핸들입니다.

간단히 말해서 스칼라 유형은 변수를 정의하는 데이터 유형입니다.


php5에는 클래스 이름, 인터페이스, 배열 및 콜백 함수가 있습니다. PHP에는 문자열, 정수, 부동 소수점 및 부울이 추가되었습니다. 아래의 예를 살펴보겠습니다. 모든 것에 대한 예를 살펴보세요

$a = $a ?? '';

여기서 $a는 int 유형이어야 함을 정의합니다. 유형 함수에 문자열이 전달되면 오류가 보고됩니다. 위 코드를 수정하면 맞습니다
function typeInt(int $a){
    echo $a;}typeInt('sad');// 运行,他讲会报错 Fatal error: Uncaught TypeError: Argument 1 passed to type() must be of the type integer, string given


반환값 유형 선언
함수 메서드의 반환값을 정의할 수 있습니다. 예를 들어 내 함수가 int 유형을 반환해야 한다면 반드시 int를 반환할 것입니다. . 문자열을 반환하면 오류가 보고됩니다. 다음과 같습니다

function typeString(string $a){
    echo $a;}typeString('sad'); //sad
배열을 정의하고 문자열이나 다른 유형을 반환하면 어떻게 되나요?

그런 다음 그는

오류를 보고합니다 예를 들어

<?phpfunction returnArray(): array{

    return [1, 2, 3, 4];}print_r(returnArray());/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/

null 병합 연산자

일상적으로 삼항 표현식과 isset()이 동시에 사용되는 상황이 많기 때문에 null 병합 연산자를 추가했습니다. (??)는 구문 설탕입니다. 변수가 존재하고 NULL이 아니면 자체 값을 반환하고, 그렇지 않으면 두 번째 피연산자를 반환합니다.

function returnErrorArray(): array
{

    return '1456546';
}

print_r(returnErrorArray());
/*
Array
Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in 
*/
우주선 연산자

<?php

$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
//这两个是等效的  当不存在user 则返回?? 后面的参数

$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;

?>
define 배열 정의

이전 버전의 PHP7에서는 정의가 배열을 정의할 수 없었습니다. 예를 들어

// 整数echo 1 <=> 1; // 0 当左边等于右边的时候,返回0echo 1 <=> 2; // -1  当左边小于右边,返回-1echo 2 <=> 1; // 1  当左边大于右边,返回1// 浮点数echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1
 // 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1
메소드 일괄 가져오기

define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // 输出 "cat"
가 가능합니다. ## #유니코드 코드 포인트 번역 구문
// PHP 7 之前的代码use some\namespace\ClassA;use some\namespace\ClassB;use some\namespace\ClassC as C;use function some\namespace\fn_a;use function some\namespace\fn_b;use function some\namespace\fn_c;use const some\namespace\ConstA;use const some\namespace\ConstB;use const some\namespace\ConstC;// PHP 7+ 及更高版本的代码use some\namespace\{ClassA, ClassB, ClassC as C};use function some\namespace\{fn_a, fn_b, fn_c};use const some\namespace\{ConstA, ConstB, ConstC};

익명 클래스

echo "\u{aa}"; //ªecho "\u{0000aa}";  //ª  echo "\u{9999}"; //香
PHP 7.1

Nullable 유형

이제 매개변수 유형과 반환 값의 유형을 nullable로 만들 수 있습니다. 유형. 이 기능이 활성화되면 전달된 매개변수 또는 함수에서 반환된 결과는 지정된 유형이거나 null 입니다.

<?phpinterface Logger {
    public function log(string $msg);}class Application {
    private $logger;

    public function getLogger(): Logger {
         return $this->logger;
    }

    public function setLogger(Logger $logger) {
         $this->logger = $logger;
    }}$app = new Application;$app->setLogger(new class implements Logger {  //这里就是匿名类
    public function log(string $msg) {
        echo $msg;
    }});
void

<?phpfunction testReturn(): ?string{
    return &#39;elePHPant&#39;;}var_dump(testReturn()); //string(10) "elePHPant"function testReturn(): ?string{
    return null;}var_dump(testReturn()); //NULLfunction test(?string $name){
    var_dump($name);}test(&#39;elePHPant&#39;); //string(10) "elePHPant"test(null); //NULLtest(); //Uncaught Error: Too few arguments to function test(), 0 passed in...

다중 예외 캡처 처리

와 같이 void를 반환하는 유형을 추가합니다. 이 함수는 일상적인 개발에서 여전히 비교적 일반적입니다.

<?phpfunction swap(&$left, &$right) : void{
    if ($left === $right) {
        return;
    }

    $tmp = $left;
    $left = $right;
    $right = $tmp;}$a = 1;$b = 2;var_dump(swap($a, $b), $a, $b);

PHP 7.2

PHP7 .2는 PHP7 시리즈에서 가장 새로운 기능

### 그룹화된 네임스페이스에서 후행 쉼표를 허용합니다

예를 들어

<?php
try {
    // some code
} catch (FirstException | SecondException $e) {  //用 | 来捕获FirstException异常,或者SecondException 异常
  
}

추상 메소드 재정의를 허용합니다

<?phpuse Foo\Bar\{
    Foo,
    Bar,
    Baz,};

새로운 객체 유형


<?phpabstract class A{
    abstract function test(string $s);}abstract class B extends A{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;}

PHP 7.3

PHP7.3은 구문 수준에서 큰 변화가 없습니다.

PHP 7.4

클래스 속성이 유형 선언을 지원합니다

PHP가 강력한 타이핑을 향해 한 걸음 더 나아간 것을 축하합니다

<?phpfunction test(object $obj) : object  //这里 可以输入对象{
    return new SplQueue();}test(new StdClass());
화살표 함수

화살표 함수는 암시적 값 기반 범위 바인딩을 사용하는 방법을 제공합니다. 기능을 정의하기 위한 것입니다. JS의 화살표 기능과 비슷하지만 fn이 있습니다. 불만의 연속

<?phpclass User {
    public int $id;
    public string $name;}?>

Null 병합 연산자 지원 방법

<?php$factor = 10;$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);// $nums = array(10, 20, 30, 40);?>
저는 주로 코드를 작성하고 붙여넣는 농부, 코더입니다.

추천(무료):

PHP7

위 내용은 PHP 7.x 각 버전의 새로운 기능을 살펴보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제