PHP :: trait 클래스 기능 확장 및 재사용 매커니즘

|

trait 이란?

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

클래스를 모두 작성했다면 위의 명령어를 통해 클래스를 실행하면 됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다