on
PHP 함수
PHP 함수
함수의 구조
function 함수이름(매개변수1, 매개변수2 ...){ 함수가 호출되었을때 실행될 코드; }
PHP함수의 특징
함수 오버로딩을 지원하지 않는다.(이미 선언된 함수를 다시 선언할 수 없다)
함수 이름은 대소문자를 구분하지 않는다. (sum() 과 SUM()은 같다)
PHP의 모든 함수와 클래스는 전역범위(global scope)를 가진다.
같은 스크립트 내에서는 함수가 내부에서 정의되었더라도 외부에서 호출할 수 있으며, 반대로 외부에서 정의되었어도 내부에서 호출할 수 있다.
PHP7 함수의 반환타입
반환타입은 PHP에서 지원하는 모든 타입이 가능
버전7부터 함수의 반환값을 원하는 타입으로 반환받을 수 있도록, 반환값의 타입을 직접 지정할 수 있다.
strict 모드에서는 반환타입이 일치하지 않으면 에러를 발생시키고, 아니라면 자동타입변환 된다. declare(strict_types = 1); // strict 모드로 설정함. function sum($x, $y) : float // 반환값의 타입을 float 타입으로 설정함. { return $x + $y; } ① var_dump(sum(3 , 4)); // 오류가 발생함. ② var_dump(sum(3 , 4.5)); // float
함수의 매개변수(Parameter)과 인수(argument)
함수로 전달된 인수에 저장된 값을 매개변수에 전달할때는 다음 방식 중 하나를 선택할 수 있다.
값 전달 방식(passing by value) //기본적인으로 함수의 인수는 값 전달 방식으로 매개변수로 전달된다. //인수를 함수에 전달하면, 새롭게 생성된 매개변수에 전달받은 값이 복사되어 저장된다. // 이처럼 매개변수에 저장된 값은 전달받은 데이터의 복사본으로, //함수안에서 변경되어도 함수 밖의 원본 데이터에는 영향을 주지 않는다. function increment($para){ $para++; } $value = 1; increment($value) //$value는 그대로 1 참조 전달 방식(passing by reference) 매개변수 앞에 '&'기호를 붙여주면 된다. //함수 내부에서 함수 밖의 데이터를 조작하기 위해서는 해당 변수를 전역변수로 선언할 수도 있지만, //참조 전달을 이용하면 더욱 유연한 코드 작성이 가능하다. //참조 전달은 인수로 전달받은 값을 복사하는 것이 아닌, //전달 받은 원본 데이터에 대한 참조를 매개변수로 전달한다. //따라서 참조 전달은 원본 데이터의 복사된 값을 가지는 것이 아니라, 원본 데이터를 그대로 참조하게 된다. //그래서 함수 내부에서 값을 변경하면 함수 밖의 원본 데이터도 같이 바뀌게 된다. function increment(&$para){ $para++; } $value = 1; increment($value) //$value는 2 가변 길이 인수 목록 전달받을 인수의 개수를 미리 정하지 않고, 호출할 때마다 유동적으로 인수를 넘기는 기능
인수를 배열의 형태로 반환해준다.
매개변수 대신 func_get_arags() 함수를 통해 인수에 접근 할 수 있다.(php5.5이하) function sum(...$num) // PHP 5.6 이상은 $sum으로 바로 접근 가능 {
$sum = 0;
foreach($num as $n) { $sum += $n; }
return $sum;
}
함수안의 함수
PHP에서는 모든 함수는 전역함수이므로, 함수 내부에서 선언된 함수라도 해당 함수 외부에서 호출할 수 있습니다. function out() { function in() { echo "이제 함수를 사용할 수 있습니다"; } }
① //in(); // 이 부분은 in() 함수가 선언되기 전이므로, 함수를 호출할 수 없습니다.
② out();
③ in(); // 이 부분은 in() 함수가 선언되었으므로, 함수를 호출할 수 있습니다.
### 가변함수 - 변수를 사용하여 함수를 호출하는 것 - PHP에서는 변수 이름에 괄호를 붙이면, 해당 변수의 값과 같은 이름을 가지는 함수를 호출한다.
function first()
{
echo "first() 함수입니다.
";
}
function second($para)
{
echo "second() 함수입니다.
";
echo "함수 호출 시 전달받은 인수의 값은 {$para}입니다.";
}
$func = "first";
$func(); // first() 함수를 호출함.
$func = "second"
$func(20); // second() 함수를 호출함.
from http://rlawldud335.tistory.com/6 by ccl(A) rewrite - 2021-12-28 17:27:00