Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 8의 속성

<시간/>

특성은 다른 클래스, 함수, 클래스 메서드, 클래스 속성, 상수 및 매개변수에 메타데이터를 추가하는 데 사용할 수 있는 클래스 종류입니다. 속성은 런타임 동안 아무 것도 하지 않습니다.

속성은 코드에 영향을 미치지 않지만 리플렉션 API에 사용할 수 있습니다. PHP 8의 속성을 사용하면 다른 코드에서 클래스 속성과 메서드를 검사할 수 있습니다.

  • 선언에 둘 이상의 속성을 가질 수 있습니다.

  • 클래스 이름을 확인할 수 있습니다.

  • 속성은 네임스페이스를 지정할 수 있습니다.

  • 0개 이상의 매개변수를 가질 수 있습니다.

PHP 8 속성 구문

  • PHP 8에서는 #[ ] (# 및 대괄호)는 속성 선언에 사용됩니다.

  • #[ ] 안에 여러 속성을 쉼표로 구분하여 선언할 수 있습니다.

  • 인수는 선택 사항이지만 괄호()로 묶어야 합니다.

  • 인수는 리터럴 값 또는 상수 표현식일 수 있습니다.

속성:구문

#[attribute]

예를 들어 클래스에 속성을 사용할 수 있습니다.

#[Attribute]
Final class EmpClass{
}

예:속성 함수

#[Attr('param')]
function Exam(){}

예:속성 클래스

#[Attr('param')]
class Exam{}

예:속성 클래스 속성

class Emp{
   #[Attribute('param')]
   public $name;
}

예:속성 클래스 상수

Class Emp{
   #[Attribute('emp')]
   private const EMP = 'emp';
}

예:속성 함수

#[Attribute('emp')]
function exam(){}

예:속성 메서드 인수

Function emp(#[Attribute('param')]$name){
}

예:함수, 메소드, 매개변수 및 상수를 사용하는 PHP 8 속성

<?php
#[MyAttribute]
class Emp
{
   #[MyAttribute]
   public const EMP = 'emp';
   #[MyAttribute]
   public $a;
   #[MyAttribute]
   public function foo(#[MyAttribute] $dept){}
}

$object = new #[MyAttribute] class(){};
#[MyAttribute]
function f() {}

$f1 = #[MyAttribute] function(){};
$f2 = #[MyAttribute] fn() => 1;
print_r($f1);
?>

출력

Closure Object ( )