> 백엔드 개발 > PHP8 > 본문

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

藏色散人
풀어 주다: 2023-02-17 12:24:01
앞으로
3534명이 탐색했습니다.

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 = &#39;&#39;)
  {
     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 = &#39;b&#39;;$str = match($key) {
    &#39;a&#39; => '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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