[PHP] 사용자 정의 함수 1개로 여러개의 메소드를 사용하는 서포트 함수 | method()
[PHP] 사용자 정의 함수 1개로 여러개의 메소드를 사용하는 서포트 함수 | method()
REDINFO
약 2년전 2022-02-05 20:34:41

글제목 선정이 조금 어려웠는데 말 그대로 사용자 정의 함수 1개를 선언하여 여러개의 함수를 

재정의 후 사용할 수 있는 서포트 함수다. 

 

나같은 경우 예전에 클래스로 컨트롤러 작업을 하다가 함수형태로도 사용하면 좋을 것 같아 따로 만들어서 계속 사용중이다. 

 

아래는 method 함수와 예제이니 참고하여 사용하면 된다.

 

method 함수

// method 함수
if( function_exists('method') === false){
    function method()
    {
        $args = func_get_args();
        if( count($args ) > 0){
            $method = $args[0];
            unset($args[0]);
            $args = array_values($args);
            if(!empty($method)) $method = strtolower($method);
            else{ $method = null; }
        }else{ $args  = array(); }
        if( $method === null ){ return false;}

        switch ($method) {

            // ===== 필수 함수 
            case strtolower("parm"):
                if( count($args[1]) < 1){ return false; }
                $parmSet = array(); $idx = 0;
                foreach($args[1] as $key => $val){ 
                    if( !empty($args[0][$idx])) $parmSet[$key] = $args[0][$idx]; 
                    else $parmSet[$key] = $args[1][$key];
                    $idx++;
                }           
                return $parmSet;
            break;

            // 텍스트에서 숫자만 가져온다. 없을경우 0 
            case strtolower("getNumber"):
                $parmSet = method('parm',$args,array('str'=>false,'int'=>false));  // 2022-04-04 - 수정
                extract($parmSet);  
                if( empty($str)){ return 0; }           

                $minus = false; // 음수를 판별 
                if( preg_match("/^[-]/",$str) > 0){ $minus = true; }
                $str = preg_replace("/[^0-9]*/s", "", $str);
                if( empty($str)){ return 0; }

                if($minus === true){ $str = '-'.$str; }
                if( !empty($str) && $int === true ){ $str*=1;  }
                
                return $str;    
            break;

        }

    }
}

 

예제

var_dump(method('getNumber',"한1국2만세")); // string(2) "12"

 

수정이력

2022-04-04 - 소스코드 오류 보정 , // 2022-04-04  주석 참고

 

 

이 포스트글이 도움이 되었나요?
3
카테고리 연관글

Comment

댓글작성

0(500) | 1(30)