목차
머리말
PHP 7.0
스칼라 유형 선언
백엔드 개발 PHP7 PHP7.x 각 버전의 새로운 기능은 무엇입니까?

PHP7.x 각 버전의 새로운 기능은 무엇입니까?

Jun 07, 2021 am 09:24 AM

이 글에서는 PHP7.x 각 버전의 새로운 기능을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP7.x 각 버전의 새로운 기능은 무엇입니까?

머리말

지난달에 동료가 제가

$a = $a ?? '';
로그인 후 복사

를 쓰는 것을 보고 이 글쓰기 방식이 무엇인지 물었습니다. 다른 글쓰기 방식이 있나요? PHP7 이상에서만 가능한 글쓰기 방법이라고 하더군요. 그는 모른다고 말했다.

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

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

자, 시작해 보겠습니다

PHP 7.0

스칼라 유형 선언

스칼라 유형이란 무엇입니까?

네 가지 스칼라 유형:

boolean(부울)

integer(정수)

float(부동 소수점, double이라고도 함)

string(문자열)

두 가지 복합 유형:

array(배열)

객체(object)

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

더 쉽게 말하면 스칼라 유형은 변수를 정의하는 데이터 유형입니다.

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

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
로그인 후 복사

여기서 $a는 int 유형이어야 함을 정의합니다. 유형 함수에 문자열이 전달되면 오류가 보고됩니다. 위 코드를 수정하면 맞습니다

function typeString(string $a)
{
    echo $a;
}

typeString('sad'); 
//sad
로그인 후 복사

반환값 유형 선언

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

<?php

function returnArray(): array
{

    return [1, 2, 3, 4];
}

print_r(returnArray());
/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/
로그인 후 복사

배열을 정의하고 문자열이나 다른 유형을 반환하면 어떻게 되나요?


그러면

function returnErrorArray(): array
{

    return &#39;1456546&#39;;
}

print_r(returnErrorArray());
/*
Array
Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in 
*/
로그인 후 복사

null 병합 연산자

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

<?php

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

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

?>
로그인 후 복사

우주선 연산자

// 整数
echo 1 <=> 1; // 0 当左边等于右边的时候,返回0
echo 1 <=> 2; // -1  当左边小于右边,返回-1
echo 2 <=> 1; // 1  当左边大于右边,返回1

// 浮点数
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
로그인 후 복사

define 배열 정의

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

define(&#39;ANIMALS&#39;, [
    &#39;dog&#39;,
    &#39;cat&#39;,
    &#39;bird&#39;
]);

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
interface 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;
    }
});
로그인 후 복사

PHP 7.1

Nullable 유형

이제 유형 앞에 물음표를 추가하여 매개변수 유형과 반환 값을 null 허용으로 만들 수 있습니다. 이 기능이 활성화되면 전달된 매개변수 또는 함수에서 반환된 결과는 지정된 유형이거나 null 입니다.

<?php

function testReturn(): ?string
{
    return &#39;elePHPant&#39;;
}

var_dump(testReturn()); //string(10) "elePHPant"

function testReturn(): ?string
{
    return null;
}

var_dump(testReturn()); //NULL

function test(?string $name)
{
    var_dump($name);
}

test(&#39;elePHPant&#39;); //string(10) "elePHPant"
test(null); //NULL
test(); //Uncaught Error: Too few arguments to function test(), 0 passed in...
로그인 후 복사

void

<?php
function 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);
로그인 후 복사

다중 예외 캡처 처리

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

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

PHP 7.2

PHP7.2는 세계에서 가장 인기가 없습니다. PHP7 시리즈 새로운 기능

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

예:

<?php

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};
로그인 후 복사

추상 메서드 재정의 허용

<?php

abstract 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

function test(object $obj) : object  //这里 可以输入对象
{
    return new SplQueue();
}

test(new StdClass());
로그인 후 복사

PHP 7.3

PHP7.3 구문에 특별한 것은 없습니다. 레벨 큰 변화.

PHP 7.4

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

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

<?php
class User {
    public int $id;
    public string $name;
}
?>
로그인 후 복사

화살표 함수

화살표 함수는 암시적 값별 범위 바인딩을 사용하여 함수를 정의하기 위한 단축 구문을 제공합니다. JS의 화살표 기능과 비슷하지만 fn이 있습니다. 불만의 물결

<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>
로그인 후 복사

Null 병합 연산자 지원 방법

<?php
$array[&#39;key&#39;] ??= computeDefault();
// 类似与这个
if (!isset($array[&#39;key&#39;])) {
    $array[&#39;key&#39;] = computeDefault();
}
?>
로그인 후 복사
추천 학습:

php 비디오 튜토리얼

위 내용은 PHP7.x 각 버전의 새로운 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)