특성은 다른 클래스, 함수, 클래스 메서드, 클래스 속성, 상수 및 매개변수에 메타데이터를 추가하는 데 사용할 수 있는 클래스 종류입니다. 속성은 런타임 동안 아무 것도 하지 않습니다.
속성은 코드에 영향을 미치지 않지만 리플렉션 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 ( )