PHP에서 정적 변수의 기본 사용법

怪我咯
풀어 주다: 2023-03-14 07:24:01
원래의
2066명이 탐색했습니다.

staticstatic객체또는 정적 변수를 정의하는 것입니다. 이 글에서 관련 예제를 읽어보면 static으로 정의된 변수나 클래스 메서드의 특성을 알 수 있습니다.

1. 객체$object = new Class()를 만든 다음 변수/메서드에 액세스할 수 있는 경우 "->"를 사용하여 $object->attribute/function을 호출합니다.
2. 정적이든 비정적이든 클래스 메서드/변수: class::attribute/function을 직접 호출합니다. 하지만 전제 조건이 있습니다:
A. 변수인 경우 해당 변수에 액세스할 수 있어야 합니다.
B. 메서드인 경우 액세스 가능한 메서드 외에도 다음을 충족해야 합니다.
b1) 정적 메서드인 경우 특별한 조건이 없습니다.
b2) 비정적 메서드인 경우 , 메소드에서 $this 를 사용하지 않도록 변경해야 합니다. 즉, 비정적 변수/메서드 호출이 없으며, 물론 정적 변수/메서드 호출에는 문제가 없습니다.

그럼 $object->...를 사용하는 것과 class::...를 사용하는 것의 차이점을 살펴보겠습니다.
1. $object->...를 사용할 때 객체를 생성하려면 constructor를 실행해야 합니다.
2. 클래스 ::...를 사용하여 생성자를 실행하지 않고 정적 메서드/변수를 호출하여 개체를 생성합니다.
3. 클래스::...를 사용하여 생성자를 실행하지 않고 비정적 메서드/변수를 호출하여 개체를 만듭니다.

그러면 이상한 점이 나옵니다. 2와 3이 동일하므로 정적 메소드/변수가 존재하는 이유는 무엇입니까?
static static
클래스 멤버나 메서드를 static으로 선언하면 클래스를 인스턴스화하지 않고 직접 액세스할 수 있습니다. 정적 멤버(정적 메서드 제외)는 개체를 통해 액세스할 수 없습니다. 정적 멤버는 클래스에 속하며 어떤 객체 인스턴스에도 속하지 않지만 클래스의 객체 인스턴스는 공유될 수 있습니다.

코드는 다음과 같습니다.

class Child{ 

public $name; 
//这里定义并初始化一个静态变量 $nums 
public static $nums=0; 
function construct($name){ 

$this->name=$name; 
} 

public function join_game(){ 

//self::$nums 使用静态变量 
self::$nums+=1; 

echo $this->name."加入堆雪人游戏"; 

} 


} 

//创建三个小孩 

$child1=new Child("李逵"); 
$child1->join_game(); 
$child2=new Child("张飞"); 
$child2->join_game(); 
$child3=new Child("唐僧"); 
$child3->join_game(); 

//看看有多少人玩游戏 
echo "<br/> 有这".Child::$nums;
로그인 후 복사


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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!