백엔드 개발 PHP8 예제를 통해 PHP8의 새로운 기능 설명

예제를 통해 PHP8의 새로운 기능 설명

Dec 02, 2021 pm 02:14 PM
php8

PHP8.0의 새로운 기능 해석 및 예시

새로운 명명된 매개변수 함수

명명된 매개변수란 무엇인가요?
함수를 호출할 때 매개변수 이름을 명시할 수 있습니다. 이름, 매개변수 원래 함수 매개변수를 설치하지 않고도 순서대로 전달할 수 있습니다.


예:
  <?php      /**
       * 计算余额方法
       * @param $amount 账户金额
       * @param $payment 支出金额
       * @return $balance = $amount-$payment 余额
       */
      function balance($amount, $payment)
      {
          return $amount - $payment;
      }
      //传统方式调用
      balance(100, 20);
      //php8 使用命名参数调用
      balance(amount: 100, payment: 20);
      //也可以换个顺序,这样来
      balance(payment: 20, amount: 100);
로그인 후 복사

주석 기능

주석이란 무엇인가요? 코드로 직접 이동하여 마지막으로

예:
#[Attribute]class PrintSomeThing{
  public function __construct($str = '')
  {
     echo sprintf("打印字符串 %s \n", $str);
  }}#[PrintSomeThing("hello world")]class AnotherThing{}// 使用反射读取住解$reflectionClass = new ReflectionClass(AnotherThing::class);$attributes = $reflectionClass->getAttributes();foreach($attributes as $attribute) {
  $attribute->newInstance(); //获取注解实例的时候,会输出 ‘打印字符串 Hello world’}
로그인 후 복사

주석 기능에 대한 개인적인 이해 요약 주석을 사용하면 클래스를 낮은 디커플링과 높은 응집력을 가진 메타데이터 클래스로 정의할 수 있습니다. 사용 시 Annotation을 통해 유연하게 도입할 수 있으며, Annotation된 클래스 인스턴스를 반영하면 호출 목적을 달성할 수 있습니다.

**주석이 달린 클래스는 인스턴스화될 때만 호출됩니다


생성자 속성 승격

클래스 속성의 수정자 범위를 생성자에서 선언할 수 있다는 것이 무슨 뜻인가요? :
<?php
    // php8之前
    class User
    {
        protected string $name;
        protected int $age;
        public function __construct(string $name, int $age)
        {
            $this->name = $name;
            $this->age = $age;
        }
    }
    //php8写法,
    class User
    {
        public function __construct(
            protected string $name,
            protected int $age
        ) {}
    }
로그인 후 복사

코드 양을 절약하므로 클래스 속성을 별도로 선언할 필요가 없습니다.

Union type

은 매개변수 유형이 불확실한 시나리오에서 사용할 수 있습니다.

예:

    function printSomeThing(string|int $value)
    {
        var_dump($value);
    }
로그인 후 복사

일치 표현식

은 스위치 캐시와 유사하지만 엄격 = = = Match

예:

<?php$key = 'b';$str = match($key) {
    'a' => 'this a',
    'c' => 'this c',
     0  => 'this 0',
    'b' => 'last b',};echo $str;//输出 last b
로그인 후 복사

새로운 Nullsafe 연산자
<?php
   class User
   {
       public function __construct(private string $name)
       {
           //啥也不干
       }
       public function getName()
       {
           return $this->name;
       }
    }
    //不实例 User 类,设置为null
    $user = null;
   echo $user->getName();//php8之前调用,报错
   echo $user?->getName();//php8调用,不报错,返回空
로그인 후 복사

단순화된 is_null 판단

권장 학습: "
PHP 비디오 튜토리얼
"

위 내용은 예제를 통해 PHP8의 새로운 기능 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

php8에 mysql 확장을 추가하는 방법 php8에 mysql 확장을 추가하는 방법 Oct 07, 2023 pm 03:31 PM

php8에 mysql 확장을 추가하는 방법

php5와 php8의 차이점은 무엇입니까 php5와 php8의 차이점은 무엇입니까 Sep 25, 2023 pm 01:34 PM

php5와 php8의 차이점은 무엇입니까

apache2.4+php8.0의 설치 및 구성 방법에 대한 자세한 그래픽 설명 apache2.4+php8.0의 설치 및 구성 방법에 대한 자세한 그래픽 설명 Dec 06, 2022 pm 04:53 PM

apache2.4+php8.0의 설치 및 구성 방법에 대한 자세한 그래픽 설명

php8에서 데이터베이스에 연결하는 방법 php8에서 데이터베이스에 연결하는 방법 Nov 16, 2023 pm 02:41 PM

php8에서 데이터베이스에 연결하는 방법

php8 데이터 유형을 변환하는 방법 php8 데이터 유형을 변환하는 방법 Nov 16, 2023 pm 02:51 PM

php8 데이터 유형을 변환하는 방법

php8에는 어떤 성능 향상이 있습니까? php8에는 어떤 성능 향상이 있습니까? Dec 21, 2023 pm 02:44 PM

php8에는 어떤 성능 향상이 있습니까?

PHP 8의 JIT에 대한 심층적인 살펴보기 PHP 8의 JIT에 대한 심층적인 살펴보기 Apr 25, 2022 pm 08:46 PM

PHP 8의 JIT에 대한 심층적인 살펴보기

php8에는 어떤 기능이 있나요? php8에는 어떤 기능이 있나요? Dec 21, 2023 pm 02:54 PM

php8에는 어떤 기능이 있나요?

See all articles