티스토리 뷰

PHP

PHP 함수

rlawldud335 2021. 12. 28. 17:14

함수의 구조

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)

함수로 전달된 인수에 저장된 값을 매개변수에 전달할때는 다음 방식 중 하나를 선택할 수 있다.

  1. 값 전달 방식(passing by value)

         //기본적인으로 함수의 인수는 값 전달 방식으로 매개변수로 전달된다.
         //인수를 함수에 전달하면, 새롭게 생성된 매개변수에 전달받은 값이 복사되어 저장된다.
         // 이처럼 매개변수에 저장된 값은 전달받은 데이터의 복사본으로,
         //함수안에서 변경되어도 함수 밖의 원본 데이터에는 영향을 주지 않는다.
         function increment($para){
             $para++;
         }
         $value = 1;
         increment($value) 
         //$value는 그대로 1
  2. 참조 전달 방식(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() 함수를 호출함.

'PHP' 카테고리의 다른 글

PHP 배열  (0) 2021.12.28
PHP 연산자와 표현식  (0) 2021.12.28
PHP 변수  (0) 2021.12.28
PHP란?  (0) 2021.12.28
최근에 달린 댓글
Total
Today
Yesterday
TAG more