php의 variables 멤버는 선언과 동시에 초기화될 수 있지만 스칼라로만 초기화될 수 있습니다.
class A { public $f1 = 'xxxx'; static public $f2 = 100; }
변수를 object에 할당하려는 경우 생성자에서만 초기화할 수 있습니다. 예:
class A { private $child; public function construct() { $this->child = new B(); } }
하지만 PHP에는 static 구성이 없습니다. Java의
static
과 유사합니다. 장치/정적 블록에 무언가가 있으면 초기화할 적절한 시간이 없습니다.
class A { static public $child; } A::$child = new B();비공개 멤버에 대한 깔끔한 방법은 없는 것 같습니다. 우리는 이 작업만 수행할 수 있습니다:
class A {
static private $child;
static public initialize() {
self::$child = new B();
}
}
A::initialize();
php에서 변수 범위의 또 다른 중요한 기능입니다. 정적 변수입니다. 정적 변수는 로컬
도메인에만 존재하며 한 번만 초기화됩니다. 프로그램 실행이 이 범위를 벗어나면 해당 값은 사라지지 않으며 마지막 실행 결과가 사용됩니다.
다음 예를 보세요:
<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?>이 함수는 $w3sky의 값을 0으로 설정하고 호출될 때마다 "0"을 출력합니다. 변수 $w3sky++를 1씩 늘려도 효과가 없습니다. 왜냐하면 이 함수가 종료되면 변수 $w3sky가 존재하지 않기 때문입니다. 이 카운트 값을 잃지 않는 카운팅 함수를 작성하려면 $w3sky 변수를 정적으로 정의하십시오.
다음과 같습니다.
<?php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?>이 함수는 $w3sky의 값을 출력하고 Test()가 호출될 때마다 이 값을 1씩 증가시킵니다. 정적 변수는
정적 변수 및 재귀 함수의 예: <?PHP
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test();
}
$count--;
}
?>
참고: 정적 변수는 위의 예와 같이 선언될 수 있습니다. 선언문에
expression
<?PHP function foo(){ static $int = 0;// correct static $int = 1+2; // wrong (as it is an expression) static $int = sqrt(121); // wrong (as it is an expression too) $int++; echo $int; } ?>
위 내용은 PHP 정적 변수에 대한 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!