정적 변수는 함수 범위 내에서만 존재합니다. 즉, 정적 변수는 스택에만 존재합니다. 일반적으로 함수 내의 변수(예: 지역 변수)는 함수가 끝난 후 해제되지만 정적 변수는 해제되지 않습니다. 즉, 다음에 이 함수가 호출될 때 변수의 값이 유지됩니다.
변수 앞에 static 키워드를 추가하면 해당 변수는 정적 변수가 됩니다.
<?php function test() { static $nm = 1; $nm = $nm * 2; print $nm."<br />"; } // 第一次执行,$nm = 2 test(); // 第一次执行,$nm = 4 test(); // 第一次执行,$nm = 8 test(); ?>
프로그램 실행 결과:
2
4
8
test() 함수가 실행된 후, 변수 $nm 값이 저장됩니다.
정적 속성은 정적 멤버, 정적 메서드 등 클래스에서 자주 사용됩니다.
프로그램 목록: 클래스의 정적 멤버
정적 변수 $nm는 클래스의 인스턴스가 아니라 nowamagic 클래스에 속합니다. 이 변수는 모든 인스턴스에 유효합니다.
::은 범위 제한 연산자입니다. 여기서는 $this 범위 대신 self 범위가 사용됩니다. $this 범위는 클래스의 현재 인스턴스만 나타내고 self::는 클래스 자체를 나타냅니다.
소스 보기
인쇄하시겠습니까?
<?php class nowamagic { public static $nm = 1; function nmMethod() { self::$nm += 2; echo self::$nm . '<br />'; } } $nmInstance1 = new nowamagic(); $nmInstance1 -> nmMethod(); $nmInstance2 = new nowamagic(); $nmInstance2 -> nmMethod(); ?>
프로그램 실행 결과:
3
5