CI 묻고 답하기

제목 uri segment 를 이용한 함수 매개변수 초기값 질문...
글쓴이 닥스훈트 작성시각 2014/07/22 00:32:27
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13484   RSS
board라는 콘트롤러에 다음과 같은 test 함수가 있습니다


public function test(){
        $ins = $this->uri->segment(4);
        $cafe = $this->board_m->makecoffee($ins);
        echo $cafe;
}


board_m에의 makecoffee는 다음과 같고요

function makecoffee($type = "cappuccino"){
        return "Making a cup of $type.\n";
}


그런데 /board/test/ 라고 치면
결과 값이 Making a cup of cappuccino. 라고 나와야 되는데
왜 

Making a cup of . 

라고 나올까요?

board/board/test/milk 라고 치면
Making a cup of milk. 

라고 제대로 출력이 되는데요...

$ins = $this->uri->segment(4);
라고 했을 때 4번째 세그먼트가 없으면 이걸 
makecoffee($type = "cappuccino")
라고 초기값으로 인식을 못하는건가요?
 다음글 게시판 관련 질문입니다. (2)
 이전글 [ CLI 질문 ] command line 에서 PHP... (2)

댓글

변종원(웅파) / 2014/07/22 01:13:41 / 추천 0
ㅍ정상입니다. 컨트롤러에서 makecoffee의 $ins를 빼보세요. 
파라미터 자체가 없을때 디폴트값을 지정해주는 겁니다
닥스훈트 / 2014/07/22 06:13:05 / 추천 0
웅파 //

정상이라는 말씀이 이해가 잘 안되는데요...
 /board/test/ 라고 했을 때 Making a cup of . 라고 나오는 것이 정상이라는 말씀이신가요?

그렇다면 function makecoffee($type = "cappuccino") 라고 파라메터 초기값을 정해주는 것이
의미없는 일 같은데...

 
한대승(불의회상) / 2014/07/22 08:10:01 / 추천 0
닥스훈트// 초기값을 정해주는것 맞습니다.
단!!! 입력값이 생략 되었을때 작동 합니다.
 
$this->makecoffee(); //  Making a cup of cappuccino.
$this->makecoffee(''); // Making a cup of .

$ins = $this->uri->segment(4); // 세그먼트 4가 없으므로 '' 와 같습니다.


 
닥스훈트 / 2014/07/22 10:08:15 / 추천 0
웅파 //
아하.. uri segment에서 파라메터가 없으면 ''값이 되는군요..
감사합니다...