티스토리 뷰

1. 개념
trait 역할
클래스를 상속을 받을 때에는 하나의 클래스에서 하나의 부모 클래스만 상속이 가능함
여러개의 클래스를 상속받을 수가 없는데 이를 해결해주고자 사용하는 trait
선언하는 변수나 함수는 클래스와 같고 class 키워드 자리에 trait로 선언하고 사용하고자 클래스에서는 use로 사용
2. 예제
trait 예시
PHP 코드
trait.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
//첫번째 trait를 선언
trait testTrait1
{
public function pr_trait1()
{
print_r( "첫번째 트레이트입니다." );
}
}
 
//두번째 trait를 선언
trait testTrait2
{
public function pr_trait2()
{
print_r( "두번째 트레이트입니다." );
}
}
 
?>
main.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
//trait.php 파일 읽기
require_once ( "trait.php" );
 
class TestTrait
{
//trait.php에 있는 트레이트를 사용선언
use testTrait1;
use testTrait2;
 
//숫자를 더하는 return 함수
public function pr_meclass( $plusNum )
{
$sumNum = $plusNum +100;
return $sumNum ;
}
}
 
//클래스로 인스턴스 생성
$test = new TestTrait();
 
//첫번째 트레이트에 있는 pr_trait1함수 호출
$test -> pr_trait1();
print_r( "<br><br>" );
 
//두번째 트레이트에 있는 pr_trait2함수 호출
$test -> pr_trait2();
print_r( "<br><br>" );
 
//클레스에 있는 pr_class 함수 호출하고 return 받음
print_r( $test -> pr_meclass(100));
 
?>
결과 화면
코드 설명
클래스에서 다른 클래스를 상속받고자 할 경우에는 하나밖에 상속이 가능하지 않습니다.
만약 대형 사이트에서 작업을 하고자 할 경우에는 여러개의 파일에 여러개의 함수나 변수를 사용하게 될 텐데 이럴 때 클래스 상속만을 쓰게 된다고 하면 불편하게 됩니다.
이럴 때 사용하는 것이 trait입니다.
이 키워드를 사용하면 하나의 클래스에서 여러 트레이트에 선언되어 있는 함수나 변수를 호출 가능하게 됩니다.
위에서와 같이 testTrait1과 testTrait2를 선언하고 use 키워드를 사용해서 해당 트레이트를 불러왔습니다.
그리고 인스턴스를 생성한 후에 호출을 하는 테스트를 진행해보면 위와 같은 결과가 나오는 것을 확인하실 수 있습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday