PHP의 정적 변수

Subodh Poudel 2023년1월30일
  1. PHP의 정적 변수
  2. self 키워드를 사용하여 PHP에서 클래스 내부의 정적 변수에 액세스
  3. 클래스 이름을 사용하여 PHP에서 클래스 외부의 정적 변수에 액세스
  4. 정적 메서드 내부의 정적 변수에 액세스
PHP의 정적 변수

이 기사에서는 PHP 정적 변수를 소개하고 그 특성을 설명하며 객체 지향 컨텍스트에서 정적 변수에 액세스하는 다양한 방법을 보여줍니다.

PHP의 정적 변수

프로그램의 변수는 나중에 프로그램에서 사용할 수 있는 데이터나 값을 저장하는 데 사용됩니다. 변수는 문자, 숫자 값, 문자열, 메모리 주소 등을 저장할 수 있습니다.

PHP에서는 $ 달러 기호 다음에 변수 이름을 사용하여 값을 선언하거나 저장합니다.

예시:

$name = "John Doe";
$marks = 90;

마찬가지로 정적 변수는 범위가 함수 외부에서 끝나지 않는 변수입니다. 비정적 변수의 범위는 함수가 종료된 후 소멸됩니다.

static 키워드를 사용하여 정적 변수를 선언할 수 있습니다.

예시:

static $name = "John Doe";
static $marks = 90;`

다음 데모를 통해 정적 변수의 속성을 살펴보겠습니다.

코드 예:

function total_marks () {
    static $marks = 90;
    $marks ++;
    print $marks;
    print "<br />";
}
total_marks();
total_marks();
total_marks();

출력:

91
92
93

위의 코드는 함수가 종료된 후에도 정적 변수가 값을 유지함을 보여줍니다. total_marks() 함수에 대한 세 가지 다른 호출이 있지만 $marks 값은 함수가 종료된 후에도 소멸되지 않습니다.

두 번째 및 세 번째 기능 호출이 수행될 때 값은 90으로 재설정되지 않습니다. 이전 값이 유지되면서 계속 증가합니다.

비정적 변수에 위의 예를 적용해 봅시다.

예제 코드:

function total_marks () {
    $marks = 90;
    $marks ++;
    print $marks;
    print "<br />";
}
total_marks();
total_marks();
total_marks();

출력:

91
91
91

$marks 변수의 값은 함수 호출이 수행될 때마다 90으로 재설정됩니다. 비정적 변수가 이전 값을 유지하지 않음을 보여줍니다.

self 키워드를 사용하여 PHP에서 클래스 내부의 정적 변수에 액세스

self 키워드를 사용하여 클래스 내부의 정적 변수에 액세스할 수 있습니다. 이중 콜론 ::self 키워드 뒤에 사용되며 정적 변수는 바로 뒤에 옵니다.

this 키워드는 정적 변수가 개체에 속하지 않으므로 정적 변수에 대해 작동하지 않습니다.

예를 들어, Student라는 클래스에서 정적 변수 $name을 만들고 John Doe 값을 할당합니다. 함수 내에서 who()는 이중 콜론과 함께 self 키워드를 사용하여 정적 변수 $name에 액세스하고 마지막으로 클래스의 객체로 함수를 호출합니다.

예제 코드:

class Student {
    public static $name = "John Doe";
    public function who() {
    echo self::$name;
    }
}
$obj = new Student;
$obj->who();

출력:

John Doe

클래스 이름을 사용하여 PHP에서 클래스 외부의 정적 변수에 액세스

정적 변수는 클래스의 인스턴스를 생성하지 않고 직접 액세스할 수 있습니다. 클래스 외부의 정적 변수에 액세스하려면 클래스 이름 뒤에 이중 콜론(::)과 정적 변수 이름을 차례로 쓸 수 있습니다.

예를 들어 클래스 내에서 Student는 첫 번째 메서드에서와 같이 정적 변수를 생성합니다. 다음으로 클래스 외부에 Student:$name을 작성하여 정적 변수에 액세스합니다.

예제 코드:

class Student {
    public static $name = "John Doe";
}
echo Student::$name;

출력:

John Doe

정적 변수 $name은 클래스 이름을 사용하여 클래스 외부에서 액세스됩니다.

정적 메서드 내부의 정적 변수에 액세스

첫 번째 예에서는 클래스 내부의 정적 변수에 액세스하는 방법을 배웠습니다. 여기에서 비정적 메서드 내부의 정적 변수에 액세스했습니다.

이 섹션에서는 정적 메서드 내부에 정적 변수를 배치하고 액세스합니다. 함수 앞에 static 키워드를 작성하여 정적 메서드를 만들고, 클래스의 인스턴스를 만들지 않고 정적 함수에 액세스하고, 클래스 이름을 사용하여 정적 메서드를 호출할 수 있습니다.

예제 코드:

class Student {
    public static $name = "John Doe";
    public static function who() {
    echo self::$name;
    }
}
Student::who();

출력:

John Doe

여기에서 :: 연산자를 사용하여 Student 클래스와 함께 who() 정적 메서드에 액세스했습니다. 메서드 내부의 정적 변수에 액세스하기 위해 self 키워드를 사용했습니다.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn