>백엔드 개발 >PHP 튜토리얼 >PHP의 정적 변수 소개

PHP의 정적 변수 소개

不言
不言원래의
2018-07-06 09:11:491895검색

이 글에서는 주로 PHP의 정적 변수에 대해 소개합니다. 특정 참조 값이 있으므로 이를 공유합니다. 도움이 필요한 친구가 참조할 수 있습니다.

1 함수 내의 정적 변수는 함수 내부에서만 작동합니다. time 호출 후 정적 변수의 값은 이전 호출에 따라 변경됩니다. 정의할 때 초기 값이 주어지면 이 문은 한 번만 실행됩니다.
예: getdata() function static $c2 = 0 이 문은 처음에 한 번만 실행됩니다.

function getdata(){
static $c2 = 0;//初始化语句
$c2 = $c2 + 1;
echo "$c2\n";
}
getdata();//结果 1
getdata();//结果 2

2 정적 클래스 멤버 변수

1. 클래스의 정적 멤버 변수는 이 클래스에만 속하지만 클래스의 모든 인스턴스는 이 정적 멤버 변수를 공유합니다.
2 정적 멤버 변수는 인스턴스화 없이 액세스할 수 있으며 액세스 속도가 더 빠릅니다. 예:

class C1 {
//use Counter;
static $c2=1;
public function inc() {
static $c;
$c = $c + 1;
echo "$c\n";
}
}
$o = new C1();
$o->inc(); // echo 1
$p = new C1();
$p->inc(); // echo 2
echo'
';
$p::$c2=5;
echo C1::$c2;//echo 5 静态成员变量不需要实例化就能访问,且访问速度快一些
echo'
';
echo $p::$c2;//echo 5
echo'
';
echo $o::$c2;//echo 5

1.static 클래스 메서드

클래스의 정적 메서드는 정적 멤버 변수에만 접근할 수 있고, 비정적 멤버 변수에는 접근할 수 없습니다(있는 경우 오류가 보고됩니다)

class C3 {
//use Counter;
public static $c3=1;
public $c5 =5;
public static function inc1() {
echo C3::$c3;//
}
public static function inc2() {
echo $this->c5; //会报错 $this不允许出现在静态方法中
}
}
C3::inc1();// echo 1
C3::inc2(); //Fatal error: Uncaught Error: Using $this when not in object context

2.Trait의 정적 변수

특성의 정적 변수는 클래스가 서로 영향을 미치지 않습니다. 예:


trait Counter {
public function inc() {
static $c = 0;
$c = $c + 1;
echo "$c\n";
}
}
class C1 {
use Counter;
}
class C2 {
use Counter;
}
$o = new C1();
$o->inc(); // echo 1
$o->inc(); // echo 2
$b = new C1();
$b->inc(); // echo 3
$b->inc(); // echo 4
$p = new C2();
$p->inc(); // echo 1
$p->inc(); // echo 2

위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트에 주목하세요!

관련 권장 사항:

PHP 배경 주석 구현


PHP가 IP의 합법성을 확인하는 방법


PHP에서 시뮬레이션된 다중 상속을 구현하는 방법

위 내용은 PHP의 정적 변수 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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