Hook 사용시 주의사항 (2) - 메소드 사용 > 그누5.4포럼

그누5.4포럼

그누보드 5.4 버전 사용자 포럼 소모임 게시판 입니다.

Hook 사용시 주의사항 (2) - 메소드 사용 정보

Hook 사용시 주의사항 (2) - 메소드 사용

본문

class TestObj {
    // 이벤트 핸들러 등록
    public function register() {
        add_event('test_event', [$this, 'test']);
    }
    // 이벤트 핸들러 메소드
    public function test() {
        die('test event fired');
    }
}
// 객체 생성 및 이벤트 핸들러 등록
$obj = new TestObj();
$obj->register();
 
// 이벤트 퐈이어
run_event('test_event');
 

==========

위의 코드처럼 사용자 클래스를 정의하고, 이벤트 핸들러를 등록하여 사용하면 될줄 알았는데 안되네요. Hook 라이브러리 git repo 에 있는 메뉴얼을 봐서는 될 것 같은데.. 좀 당황 ^^;;

 

다음과 같이 사용하실 수 있습니다.

class TestObj {
    // 이벤트 핸들러 메소드
    public function test() {
        die('test event fired');
    }
}
// 이벤트 등록
add_event('test_event', ['TestObj', 'test']);
// 이벤트 퐈이어
run_event('test_event');
 

==========

 

또는.. 인스턴스를 생성하고 추가적인 작업이 필요한 경우에는 싱글톤을 사용하시면 됩니다.

 

class TestObj {
    // 싱글톤 인스턴스
    private static $instance = null;
 
    // 인스턴스 접근 메소드
    public static function getInstance() {
        if(!self::$instance) {
            self::$instance = new TestObj();
        }
        return self::$instance;
    }
    // 프라이빗 생성자 (중복 생성 방지)
    private function __construct() {
    }
    // 이벤트 핸들러
    public function test() {
        die('test event fired');
    }
}
$instance = TestObj::getInstance();
// .. do something with $instance
add_event('test_event', [$instance, 'test']);
run_event('test_event');
추천
2

댓글 2개

전체 28 |RSS
그누5.4포럼 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT