Chillax in dev

[PHP] 코드이그나이터 _remap 메소드의 역할 본문

PHP

[PHP] 코드이그나이터 _remap 메소드의 역할

Seong Story 2024. 6. 21. 11:22
728x90

코드이그나이터 _remap 메소드의 역할

 

_remap 메소드는 CodeIgniter 프레임워크에서 사용되는 특별한 메소드로, 모든 컨트롤러 메소드 호출을 가로채어 특정 로직을 실행할 수 있도록 합니다. 이 메소드를 사용하면 요청된 메소드가 존재하지 않더라도 커스텀 로직을 적용할 수 있습니다.

_remap 메소드의 역할

  1. 모든 요청 가로채기: _remap 메소드는 컨트롤러에서 호출된 모든 메소드를 가로채어 처리할 수 있습니다. 즉, 사용자가 컨트롤러의 어떤 메소드를 호출하든 _remap 메소드가 먼저 실행됩니다.
  2. 커스텀 로직 적용: _remap 메소드는 호출된 메소드 이름과 매개변수를 인수로 받아, 이를 기반으로 커스텀 로직을 적용할 수 있습니다.

_remap 메소드의 구조

 
public function _remap($method, $input = null) {
    // 호출된 메소드명: $method
    // 전달된 매개변수: $input

    // 예: 특정 메소드에 대해 다른 메소드를 호출
    if ($method === '특정메소드명') {
        $this->특정메소드($input);
    } else {
        // 기본 처리 로직
        $this->기본메소드($method, $input);
    }
}

예시 코드

아래는 _remap 메소드를 사용하여 호출된 메소드에 따라 다른 로직을 적용하는 예시입니다.

class Category extends CI_Controller {
    
    public function _remap($method, $input = null) {
        // 알리 모델을 불러옴
        $this->load->model("test");
        
        // Input Data Checking POST Method
        $data = file_get_contents('php://input');
        $data = $this->lib->decode_json($data);
        
        // 호출된 메소드에 따라 다른 메소드를 호출
        switch ($method) {
            case "info":
                $this->getCategory($data);
                break;
            default:
                $this->auth->getResponseJSONError(404, "요청한 메소드가 존재하지 않습니다.");
                break;
        }
    }
    
    public function getCategory($data) {
        // 이곳에 getCategory 메소드의 내용을 작성하세요.
        
    }
}

예시 설명

  • _remap 메소드는 $method와 $input을 인수로 받습니다.
    • $method: 호출된 메소드명입니다.
    • $input: 전달된 매개변수입니다.
  • switch 문을 사용하여 호출된 메소드명에 따라 다른 메소드를 호출합니다.
    • info 메소드가 호출되면 getCategory 메소드를 실행합니다.
    • 그 외의 메소드가 호출되면 404 에러를 반환합니다.

요약

  • _remap 메소드는 CodeIgniter의 특별한 메소드로, 모든 컨트롤러 메소드 호출을 가로채어 커스텀 로직을 적용할 수 있습니다. 즉 $method에 따라 원하는 기능을 하나의 컨트롤러로 실행 가능합니다.
  • 호출된 메소드명과 매개변수를 인수로 받아 처리할 수 있습니다.
  • 이를 통해 유연한 메소드 호출 로직을 구현할 수 있습니다.

이렇게 _remap 메소드를 사용하면 특정 메소드가 존재하지 않더라도 원하는 로직을 적용하여 처리할 수 있습니다.

728x90
LIST
Comments