동하아빠

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개

냑보드로 너무 복잡한거 만드시는거 아닙니다 -_-;;;
(이해가 1도 안가지만 -_- 뭔가 복잡한거 만드시는거 같네요)
@Rido 아.. 뭐 만드는거 아니고.. 걍 테스트요;; 워프 훅 에서는 다 되는데.. 이 라이브러리는 좀 제한적이네요
댓글을 작성하시려면 로그인이 필요합니다.

그누5.4포럼

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

+
제목 글쓴이 날짜 조회
2년 전 조회 465
5년 전 조회 1,091
5년 전 조회 1,615
6년 전 조회 2,683
6년 전 조회 1,548
6년 전 조회 2,482
6년 전 조회 1,824
6년 전 조회 2,936
6년 전 조회 1,428
6년 전 조회 1,471
6년 전 조회 1,325
6년 전 조회 1,980
6년 전 조회 1,815
6년 전 조회 2,192
6년 전 조회 2,172
6년 전 조회 3,263
6년 전 조회 3,305
6년 전 조회 1,844
6년 전 조회 2,267
6년 전 조회 3,608
6년 전 조회 1,795
6년 전 조회 2,085
6년 전 조회 2,565
6년 전 조회 4,086
6년 전 조회 5,243
6년 전 조회 4,888
6년 전 조회 1,934
6년 전 조회 1,716