PHP function 함수 정의, 호출 #1

|
function 사용법

요약

함수는 모든 개발 언어에서 함수는 아주 중요한 역할을 하고 있습니다.
특히나 OOP (객체 지향 프로그래밍) 에 대한 개념도 중요한데요.

이는 PHP 뿐만 아니라 C#, JAVA, 파이썬 등
객체지향을 사용하는 범위가 아주 넓기 때문입니다.

그만큼 잘 배워두면 많은 곳에서 사용할 수도 있기도 하고, 은근 다 비슷합니다. 이론들이
안정적인 기술인 거죠. 한번 배워두면 사용할 곳들이 많습니다.

함수 사용법

빈 깡통 함수

물을 넣지 않은 주전자입니다.
그냥 존재만 하고 있습니다.

function 함수명() {}


함수가 미쳤다.

이번엔 어때보이시나요? 주전자에 불을 내뿜는 기능을 만들었습니다.
그렇습니다. input 은 없지만 output 이 있죠. 무에서 유를 창출하고 있습니다.

function 함수명() {
    echo "함수내용";
}

위와 같이 간단하게 함수(function)를 설정하여 사용할 수 있습니다.

function 함수 매개변수 설정

함수 에 물을 넣고 불을 넣었다.

이번엔 물을 넣어보겠습니다. 아름답군요.
이게 함수입니다. input 이 있지만 output 은 없는 함수도 만들 수 있습니다.

function 함수명 ($매개변수1, $매개변수2){
    echo $매개변수1 + $매개변수2;
}

매개변수를 설정하면 내부에서도 사용할 수 있게 됩니다

변수에 함수 결과값 출력

$함수결과 = 함수명(1,2);
  1. 변수 값을 할당합니다.
  2. 함수를 실행하여 값을 $함수결과에 저장합니다.

함수 값 반환

function 함수명 ($매개변수1, $매개변수2){
    return $매개변수1 + $매개변수2;
}

위와 같이 함수 값을 리턴시킬 수도 있습니다.

함수에 타입 설정

function 함수명 (매개변수1, 매개변수2) : float
{
    return $매개변수1 + $매개변수2;
}

함수에 타입을 설정할 수도 있습니다.

  • 숫자 : int
  • 소수점 숫자 : float
  • 문자 : string
  • 참/거짓 : bool
  • 배열 : array
  • 객체 : object
  • 클래스 : 클래스명, 인터페이스명

<?php
class C {}

function getC(): C {
    return new C;
}

var_dump(getC());
?>

// 출력
// object(C)#1 (0) {
// }

클래스를 기준으로 함수에 적용할 수도 있습니다.

gettype( 함수명(1,2) );

엄격한 타입 설정

declare(strect_types = 1); // strict 모드 활성화

function sum($x, $y) : float // 반환값 타입 float 설정
{
    return $x + $y
}

var_dump(sum(1 + 2)); // 에러
var_dump(sum(1 + 1.5)); // 2.5 반환

float 타입으로 설정하면 소수점만 저장할 수 있습니다.
strict 모드를 활성화 하면 느슨한 PHP 환경에 긴장감을 줄 수 있게 됩니다.

함수는 반복문에서 정의하지 말것

while 문과 같은 반복문에서 함수를 정의하면 적용되지 않을 수 있습니다

function 함수에서 중단점 설정법

function test($value) {
   if(!$value) { return; }
   echo $value;
}

함수를 중단 시켜야 하는 상황이 한드시 존재합니다.
이 때는 return; 구문을 활용하여 중간에 멈출 수 있는데요,
위와 같이 조건에 해당되지 않으면 return 을추가하여 문제를 해결하는 것이 좋습니다.

함수 정의 위치는?

함수 정의는 맨 끝에 두어도 정상적으로 실행됩니다. PHP 인터프리터가 함수를 정의할 때 이미 함수 호출 코드를 찾아보기 때문입니다

function() use 사용법

<?php

$message = "안녕하세요!";

$greeting = function() use ($message) {
    echo $message;
};

$greeting(); // 출력: 안녕하세요!
?>

함수 파라미터 뒤의 use 를 붙이는 경우가 존재합니다.
이는 익명 함수에서 클로저를 사용하기 위함입니다.

위의 코드는 클로저 내부에서 외부의 $message 변수를 사용할 수 있게 합니다.

  • 클로저 : 함수가 스코프 밖의 범위에 접근하기 위해 사용

PHP 함수는 외부 변수와 소통할 방법이 global와 파라미터밖에 없습니다.
이를 해결하기 위해 use(외부변수명) 으로 함수가 외부 스코프를 명시적으로 참고할 수 있게 합니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다