2009. 4. 1. 19:47
728x90
함수는 다음과 같이 선언을 합니다.
함수명은 변수명과 같은 식별자를 사용합니다. 인자는 함수 호출시에 함수 내부에 전해줄 값입니다. 앞서 제어구조에서 배웠듯이 return을 통해 수행결과를 되돌려 줄 수 있습니다.
위 소스에서 두가지를 알 수 있습니다. 한가지는 함수 선언이 나중에 되어 있어도 호출이 가능하다. 또 한가지는 조건적으로 함수를 선언할 수 있다. 만약 $use 가 false 이거나 선언전에 호출을 한다면 함수가 정의되지 않았다는 심각한 에러를 맛보게 될 것입니다.
이 소스는 참 재미나는군요. 함수안에 함수를 정의하여, 함수가 호출되기 전까지는 사용이 불가능합니다. 함수가 호출이 되고 나면 함수안의 함수가 선언되어지고 그 이후부터 사용이 가능하게 됩니다.
참고 (중급).
PHP는 함수 오버로딩(function overloading)을 지원하지 않습니다. 함수 오버로딩이란 함수의 이름이 같으면서 인자의 데이터형이나 인자의 수가 다른 것을 서로 다른 함수로 받아들이는 것을 말합니다. 따라서 같은 이름의 함수나 이미 선언된 함수명은 절대 사용할 수 없습니다.
PHP는 함수 오버로딩(function overloading)을 지원하지 않습니다. 함수 오버로딩이란 함수의 이름이 같으면서 인자의 데이터형이나 인자의 수가 다른 것을 서로 다른 함수로 받아들이는 것을 말합니다. 따라서 같은 이름의 함수나 이미 선언된 함수명은 절대 사용할 수 없습니다.
PHP에서 함수에 인자를 넘겨주는 세가지 방법이 있습니다.
기본적으로 값에 의한 전달, 참조에 의한 전달, 기본 인자값. 이 세가지입니다.
1) 값에 의한 전달 (passing by value)
$args=1; test_function($args); test_function(1); ?>
위와 같이 변수를 통해 값을 전달하거나 직접적으로 값을 전달하는 방법이 "값에 의한 전달"입니다.
이 방법을 통해 배열도 전달이 가능합니다.
참고 (중급).
배열을 인자를 통해 전달하는 것은 엄연히 따지면 값에 의한 전달이 아닙니다. 그러나 PHP에는 포인터 개념이 없으므로 그저 값에 의한 전달에 보셔도 상관없습니다.
배열을 인자를 통해 전달하는 것은 엄연히 따지면 값에 의한 전달이 아닙니다. 그러나 PHP에는 포인터 개념이 없으므로 그저 값에 의한 전달에 보셔도 상관없습니다.
2) 참조에 의한 전달 (passing by reference)
참조를 통해 전달받은 변수는 수정하면 원래 변수까지 영향을 미치게 됩니다.
그래서 $str 변수를 출력했음에도 $string 변수가 출력되어 집니다.
실제로 $str 과 $string 은 이름만 다를뿐 같은 변수입니다.
3) 기본 인자값
"; } echo ezphp_net (); echo ezphp_net ("http://www.ezphp.net"); ?>함수 인자에 기본값을 설정해 놓은 것입니다.
값이 전달되지 않았을 때 기본값을 그 값으로 이용하는 것이죠.
결과는 다음과 같습니다.
홈페이지 주소 : http://ezphp.net
홈페이지 주소 : http://www.ezphp.net
이 기본 인자값을 설정할 때 유의해야 할 점이 있습니다.
인자가 여러개일 때 기본인자값을 설정할 인자를 제일 마지막에 두어야 한다는 것입니다.
만약 처음 인자에 기본값을 지정한다면 역시~ 에러를 맛보게 될 것입니다. ㅋㅋㅋ
return을 이용하여 값을 되돌려주거나 참조를 되돌려 줄 수 있습니다.
1) 값을 되돌려 주기
제곱을 하는 함수입니다. 제곱을 한 결과를 값(16)으로 되돌려줍니다.
위와 같이 배열을 되돌려 줄 수도 있습니다.
1) 참조를 되돌려 주기
참조를 되돌려 줄 때는 반드시 함수명앞에 & 기호를 표시해야 합니다. 이는 함수의 되돌림값이 참조라는 것을 명시하기 위함입니다.
728x90