클래스에서 그누보드 훅스 쓸 때 팁 (세줄요약) > 그누보드5 팁자료실

그누보드5 팁자료실

클래스에서 그누보드 훅스 쓸 때 팁 (세줄요약) 정보

클래스에서 그누보드 훅스 쓸 때 팁 (세줄요약)

본문

그누보드5로 이것저것 만들다보니 클래스도 사용하게되었는데요

 

클래스 내부에서 훅스를 쓰다가 한가지 알아낸겁니다.

흔히 클래스를 싱글톤패턴으로 만들어서 사용하게되면  getInstance 라는 함수를 만들어서

거기서 인스턴스를 꺼내쓰잖아요?

 

함수이름을 getInstance 에서 get_instance 로 하니까 갑자기 hook 에서 오류가 나더군요

 

getInstance 를 찾을 수없다는 PHP 에러메시지...

 

알고 보니 Hook.class.php 에서

 

    protected function runAction($action, $args)
    {
        $function = $action['function'];
        $argsNumber = $action['arguments'];
        $class = (is_array($function) && isset($function[0])) ? $function[0] : false;
        $method = (is_array($function) && isset($function[1])) ? $function[1] : false;
 
        $args = $this->getArguments($argsNumber, $args);
 
        if (! ($class && $method) && function_exists($function)) {
            return call_user_func_array($function, $args);
        } elseif ($obj = call_user_func(array($class, $this->singleton))) {
                                                        //여기서 에러
            if ($obj !== false) {
                return call_user_func_array(array($obj, $method), $args);
            }
        } elseif (class_exists($class)) {
            $instance = new $class;
 
            return call_user_func_array(array($instance, $method), $args);
        }
    }

 

 

따라가보니까 훅 라이브러리 클래스 $singleton 이라는 클래스 변수에

getInstance 라고 떡하니 지정되어있었네요 ㅋㅋ

protected $singleton = 'getInstance';

 

이제는 getInstance 라고 이름 지어야겠습니다 ㅋㅋ

 

+ 쓰면서 찾다 보니 hook.class파일에 setSingletonName() 라는 함수가 있네요

setSingletonName('인스턴스용함수이름'); 을 훅 쓰기전에 생성자에서 지정할 수있더라고요.

 

정적함수라서 Hook 클래스이름을 붙여야됩니다.

Hook::setSingletonName('클래스인스턴스호출할 함수이름')

common.php에서 훅파일은 인클루드해놔서 따로 인클루드 할필요는 없군요.

 

 

그리고 훅스에 등록할 함수들은 public으로 해야됩니다.

private 으로 설정해도되는 라이브러리들은 리플렉션쓰는거라 느려서

public으로 해야하는 라이브러리가

탑재된거 같네요

 

세줄요약

1.싱글톤 패턴을 쓰는 클래스에서 인스턴스 호출 함수이름은 getInstance 로 한다.

2. 다른이름하려면 훅 호출전Hook::setSingletonName('지정할함수이름');

3. 훅이 호출할 함수는 public으로 선언해야한다.

추천
6

댓글 1개

전체 2,424 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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