PHP
[PHP] 코드이그나이터 _remap 메소드의 역할
Seong Story
2024. 6. 21. 11:22
코드이그나이터 _remap 메소드의 역할
_remap 메소드는 CodeIgniter 프레임워크에서 사용되는 특별한 메소드로, 모든 컨트롤러 메소드 호출을 가로채어 특정 로직을 실행할 수 있도록 합니다. 이 메소드를 사용하면 요청된 메소드가 존재하지 않더라도 커스텀 로직을 적용할 수 있습니다.
_remap 메소드의 역할
- 모든 요청 가로채기: _remap 메소드는 컨트롤러에서 호출된 모든 메소드를 가로채어 처리할 수 있습니다. 즉, 사용자가 컨트롤러의 어떤 메소드를 호출하든 _remap 메소드가 먼저 실행됩니다.
- 커스텀 로직 적용: _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