2013-07-08 3 views
1

codeigniter에 매개 변수를 전달하려고합니다.

이 나를 위해 작동합니다 :이

function the_kwarg($gender=$this->uri->segment(3)){ 
    //$gender = $this->uri->segment(3); 
} 

왜 그런 식으로 할 잘못 잘못된 이유

function the_kwarg($gender){ 
    $gender = $this->uri->segment(3); 
} 

을하지만, 난 이해가 안 돼요?

답변

3

함수는 스칼라 기본값 만 받아 들일 수 있기 때문에 해당 문맥에서 $this (또는 모든 변수)을 평가할 수 없습니다. the manual에서

: ++ C를 정의 할 수 있습니다

함수 - 스타일의 기본 값을 스칼라 인수.

하고 :

기본 값은 정수이어야한다 (예를 들면) 변수 반원 또는 함수 호출해야한다.

3

함수 인수 기본값은 동적 표현식 일 수 없습니다. 1 + 1이 표현이기 때문에

function foo ($x = 1 + 1) { } 

는 불법입니다. 우리는 모두 결과가 상수 2이라는 것을 알고 있지만 PHP는 똑똑하지 않으며 단지 표현식을 보았습니다.

function the_kwarg($gender = null){ 
    $gender = (!is_null($gender)) ? $gender : $this->uri->segment(3); 
} 
1

, 나는 어떻게 문제를 해결하는 방법을 예를 제공 할 수 있습니다 함수 이름 다음에 uri segments은 기본적으로 함수의 매개 변수입니다.

0

왜 당신은 그냥 CI에서

function the_kwarg($gender){ 
echo $gender; // will echo male 
} 

// http://www.example.com/controller/the_kwarg/male 

같은 기능을 사용하지 않는 : 사람들이 이미 당신에게 정확한 답을 준 반면

관련 문제