코드이그나이터4 컨트롤러 다루기 - 3 - 디폴트 파라미터

고은연·2021년 3월 5일
1

이번 챕터의 코드는 https://github.com/koeunyeon/ci4/tree/default_param 에서 확인할 수 있습니다.


만약에 파라미터가 선언된 엔드포인트 메소드에 파라미터가 전달되지 않으면 어떻게 될까요? http://localhost:8080/sample/param에 접속해서 결과를 확인하겠습니다.

확인할 수 있듯이 ArgumentCountError 오류가 납니다. 이런 경우를 방지하기 위해 PHP의 디폴트 파라미터 기능을 활용해 보겠습니다.


Sample 컨트롤러에 아래의 메소드를 추가합니다.
/app/Controllers/Sample.php

public function defaultparam($name = 'codeigniter 4'): string // (1)
{
    return "default param name is " . $name;
}

http://localhost:8080/sample/defaultparam 접속해서 기본 값이 나오는지 확인합니다.

http://localhost:8080/sample/defaultparam/ci4 접속해서 파라미터 입력되는지 확인합니다.


코드를 확인해 보겠습니다.
(1) $name 파라미터는 기본값 codeigniter 4를 가지고 있습니다. 아시다시피 PHP에서 디폴트 파라미터는 함수 혹은 메소드에 파라미터가 전달되지 않았을 때 기본으로 사용될 값을 정의하는 거죠. 따라서 URL 경로가 /sample/defaultparam일 때를 PHP 유사 코드로 표현하면 아래와 같을 겁니다.

$sample->defaultparam();

물론 /sample/defaultparam/ci4 처럼 파라미터가 전달되면 아래처럼 메소드를 호출합니다.

$sample->defaultparam("ci4");

만약에 선언된 파라미터 갯수보다 URL 경로에서 더 많은 파라미터가 입력된다면 어떻게 될까요?
http://localhost:8080/sample/defaultparam/over_param/5/6/7에 접속해서 확인해 봅시다.

메소드 정의에서 선언된 갯수를 넘어가는 파라미터는 무시됩니다.

profile
중년 아저씨. 10 + n년차 백엔드 개발자. 스타트업과 창업, 솔로프리너와 1인 기업에 관심 많아요.

0개의 댓글