>  기사  >  백엔드 개발  >  PHP 정적 변수에 대한 질문

PHP 정적 변수에 대한 질문

怪我咯
怪我咯원래의
2017-07-10 11:39:541282검색

phpvariables 멤버는 선언과 동시에 초기화될 수 있지만 스칼라로만 초기화될 수 있습니다.

예:

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에서 변수 범위의 또 다른 중요한 기능입니다. 정적 변수입니다. 정적 변수는 로컬

function

도메인에만 존재하며 한 번만 초기화됩니다. 프로그램 실행이 이 범위를 벗어나면 해당 값은 사라지지 않으며 마지막 실행 결과가 사용됩니다.

다음 예를 보세요:

<?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씩 증가시킵니다. 정적 변수는
재귀 함수

를 처리하는 방법도 제공합니다. 재귀 함수는 자신을 호출하는 메서드입니다. 재귀 함수를 작성할 때는 종료 없이 무한정 재귀할 수 있으므로 주의하십시오. 재귀를 중단할 수 있는 방법이 있는지 확인하십시오. 다음의 간단한 함수는 정지 시점을 결정하기 위해 정적 변수 $count를 사용하여 10까지 재귀적으로 계산합니다.

정적 변수 및 재귀 함수의 예:

<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.