trait ExampleTrait {
public function printHello() {
echo "Hello, Trait!";
}
}
class MyClass {
use ExampleTrait;
}
$obj = new MyClass();
$obj->printHello(); // 출력: Hello, Trait!
trait 은 클래스는 아닙니다. 그렇지만 클래스의 기능을 확장하기 위해 사용되는 일종의 매커니즘이기 때문에
이를 활용하여 class 에 반복되는 함수를 반영할 수 있는 장점을 가지고 있습니다.
trait Logger {
protected function log($message) {
// 현재 시간과 로그 메시지를 함께 출력
echo date('Y-m-d H:i:s') . ": " . $message . "\n";
}
}
trait 을 미리 추가하여 protected 함수를 생성합니다.
class Product {
use Logger;
public function create() {
// 상품 생성 로직...
$this->log("Product created");
}
}
class User {
use Logger;
public function login() {
// 사용자 로그인 로직...
$this->log("User logged in");
}
}
그 다음 use 로 불러오기를 한 뒤 상황에 맞추어 사용하면 됩니다.
$product = new Product();
$product->create(); // 로그: [현재시간]: Product created
$user = new User();
$user->login(); // 로그: [현재시간]: User logged in
클래스를 모두 작성했다면 위의 명령어를 통해 클래스를 실행하면 됩니다.