PHP - 변수 범위

안녕하세요, PHP 개발자 지망생 여러분! 오늘 우리는 PHP의 변수 범위 세계에서 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 필수 개념을 통해 더 나은, 더 효율적인 코드를 작성하는 데 도움을 드리기 위해 여러분을 안내하겠습니다. 그러면 가상의 메모지를 집고, 함께 뛰어들어보겠습니다!

PHP - Variable Scope

변수 범위란 무엇인가요?

예제로 넘어가기 전에 변수 범위가 무엇인지 이해해 보겠습니다. 범위는 변수가 살고 놀아하는遊び터라고 생각해 보세요. 어떤 변수는遊び터의 어디서나 놀 수 있습니다(전역 범위), 반면에 다른 변수는 특정 구역에만 제한됩니다(지역 범위). 이러한遊び터를 이해하는 것은 깨끗하고 버그 없는 코드를 작성하는 데 매우 중요합니다.

지역 범위

우리의 첫 번째 예제를 통해 지역 범위를 설명해 보겠습니다.

예제 1: 지역 변수

function greet() {
$name = "Alice";
echo "Hello, $name!";
}

greet(); // 출력: Hello, Alice!
echo $name; // 이 문장은 오류를 발생시킵니다

이 예제에서 $namegreet() 함수 안에서만 놀 수 있는 조숙아처럼 보입니다. 함수 밖에서는 보이지 않거나 접근할 수 없습니다. 이를 지역 범위라고 합니다.

예제 2: 함수 매개변수

function calculateArea($length, $width) {
$area = $length * $width;
echo "The area is: $area";
}

calculateArea(5, 3); // 출력: The area is: 15
echo $length; // 이 문장은 오류를 발생시킵니다

여기서 $length$widthcalculateArea() 함수에 대해 지역적입니다. 이들은 방문자처럼 함수 내에서만 존재합니다.

"global" 키워드

이제 어디서나 놀 수 있는 인기 아이, 즉 전역 변수를 만나보겠습니다!

예제 3: global 키워드 사용

$globalGreeting = "Hello, World!";

function greetGlobally() {
global $globalGreeting;
echo $globalGreeting;
}

greetGlobally(); // 출력: Hello, World!

global 키워드를 사용하여 PHP에게 "이 변수를 전역遊び터에서 놀 수 있게 해 줘!"라고 말하고 있습니다. 이는 우리의 변수에 전역 접근 권한을 주는 것과 같습니다.

$GLOBALS 배열

PHP는 모든 전역 변수를 포함한 $GLOBALS라는 매우 멋진 배열을 제공합니다. 이는遊び터의 모든 인기 아이들의 목록과 같습니다.

예제 4: $GLOBALS 배열 사용

$fruit = "Apple";

function describeFruit() {
echo "The fruit is: " . $GLOBALS['fruit'];
}

describeFruit(); // 출력: The fruit is: Apple

$GLOBALS를 사용하면 함수 내에서 전역 변수에 접근하는 또 다른 방법입니다. 이는遊び터의 디렉토리를 찾아 특정 아이가 어디에서 놀고 있는지 확인하는 것과 같습니다.

정적 변수

이제 정적 변수에 대해 이야기해 보겠습니다. 정적 변수는遊び터를 나왔지만 마지막 게임을 기억하는 신비한 아이들입니다!

예제 5: 정적 변수

function countVisits() {
static $count = 0;
$count++;
echo "You've visited this function $count time(s).";
}

countVisits(); // 출력: You've visited this function 1 time(s).
countVisits(); // 출력: You've visited this function 2 time(s).
countVisits(); // 출력: You've visited this function 3 time(s).

정적 변수는 기억력이 뛰어난 선수들입니다. 함수가 실행이 끝난 후에도 값을 기억합니다. 여러 번의 함수 호출 간에 값을 추적하는 데 매우 유용합니다.

실용적인 응용

이제 우리가 배운 지식을 실제 상황에 적용해 보겠습니다!

예제 6: 간단한 카운터 애플리케이션

$globalCounter = 0;

function incrementCounter() {
global $globalCounter;
static $localCounter = 0;

$globalCounter++;
$localCounter++;

echo "Global counter: $globalCounter, Local counter: $localCounter<br>";
}

incrementCounter(); // 출력: Global counter: 1, Local counter: 1
incrementCounter(); // 출력: Global counter: 2, Local counter: 2
incrementCounter(); // 출력: Global counter: 3, Local counter: 3

echo "Final global counter: $globalCounter"; // 출력: Final global counter: 3

이 예제에서 우리는 전역 변수와 정적 변수를 사용하여 간단한 카운터 애플리케이션을 만들고 있습니다. 전역 카운터는 어디서나 접근할 수 있으며, 지역 정적 카운터는 함수 호출 간에 값을 기억합니다.

변수 범위 방법 요약

여기서 다양한 변수 범위 처리 방법을 요약한 표를 제공합니다:

방법 설명 사용 사례
지역 변수 함수 내에 정의된 변수 특정 함수 내에서만 필요한 변수 사용 시
global 키워드 함수 내에서 전역 변수에 접근 함수 내에서 전역 변수를 수정할 때
$GLOBALS 배열 모든 전역 변수를 포함한 배열 복잡한 스크립트에서 전역 변수에 접근할 때
정적 변수 함수 호출 간에 값이 유지되는 변수 여러 번의 함수 호출 간에 상태를 유지할 때

변수 범위를 이해하는 것은遊び터의 규칙을 알고 있는 것과 같습니다. 이를 통해 깨끗하고 효율적인 코드를 작성하고, 프로그램의 다른 부분 간의 충돌을 피할 수 있습니다.

이 강의를 마무리하며, PHP 변수 범위遊び터의 여정을 즐겼기를 바랍니다. 계속 연습하고 실험하고, 가장 중요한 것은 코딩을 즐기세요! 누구 knows, 다음 PHP遊び터 챔피언이 바로 당신일지도 모릅니다! ??‍??‍?

Credits: Image by storyset