PHP는 static 키워드를 사용하여 정적 속성과 정적 메서드를 선언합니다.

黄舟
풀어 주다: 2023-03-12 12:08:01
원래의
1825명이 탐색했습니다.

PHP는 정적 키워드를 사용하여 정적 속성과 정적 메서드를 선언합니다.

PHP에서는 정적 키워드로 수정된 멤버 속성과 멤버 메서드를 정적 속성과 정적 메서드라고 합니다.

정적 속성과 정적 메서드는 클래스에서 인스턴스화하지 않고 직접 사용할 수 있습니다.

1. 정적 속성

정적 속성은 static 키워드로 수정된 멤버 속성이며 클래스의 인스턴스에는 속하지 않습니다. 이는 클래스에 저장된 전역 변수와 동일하며 클래스를 통해 어디에서나 액세스할 수 있습니다.

클래스가 인스턴스화된 개체를 통해 정적 속성에 액세스할 수 없습니다.

정적 속성 액세스의 구문 형식은 다음과 같습니다.

类名称::$静态属性名称
로그인 후 복사

기호 "::"는 범위 구문 분석 연산자라고 하며 정적 속성, 정적 메서드 및 상수에 액세스하는 데 사용되며 다음 작업에도 사용할 수 있습니다. 클래스 및 메서드의 멤버를 재정의합니다.

클래스 내부의 멤버 메소드에서 정적 속성에 액세스하려면 정적 속성 이름 앞에 "self::" 연산자를 추가하세요. 클래스 이름::만 사용하면 클래스 외부에서 클래스 내부의 정적 속성을 호출할 수 있습니다.

참고:

객체는 -> 연산자를 통해 정적 속성에 액세스할 수 없습니다.

다른 모든 PHP 정적 변수와 마찬가지로 정적 속성은 표현식이 아닌 리터럴이나 상수로만 초기화할 수 있습니다. 따라서 정적 속성은 정수 또는 배열로 초기화될 수 있지만 다른 변수나 함수 반환 값으로 초기화될 수 없으며 개체를 가리킬 수도 없습니다.

2. 정적 메서드

정적 메서드는 static 키워드로 수정된 멤버 메서드입니다. 어떤 객체에도 제한을 받지 않기 때문에 클래스를 인스턴스화하지 않고도 클래스의 정적 메서드를 직접 참조할 수 있습니다. 정적 메서드는 인스턴스화된 클래스의 개체를 통해 액세스할 수 있습니다.

정적 메서드 참조의 구문 형식은 다음과 같습니다.

类名称::静态方法名称([参数1,参数2,...])
로그인 후 복사

마찬가지로 정적 메서드 이름 앞에 "self::" 연산자를 추가하면 클래스 내부 멤버 메서드에서 정적 메서드를 참조할 수 있습니다. 클래스 이름::만 사용하면 클래스 외부에서 클래스 내부의 정적 메서드를 호출할 수 있습니다.

참고:

정적 메서드에서는 정적 변수만 호출할 수 있으며 일반 변수는 정적 변수를 호출할 수 없습니다.

정적이 아닌 메서드를 정적으로 호출하면 E_STRICT 수준 오류가 발생합니다.

정적 메서드는 객체를 통해 호출할 필요가 없으므로 정적 메서드에서는 의사 변수 $this를 사용할 수 없습니다.

Tips

정적 멤버를 사용하면 개체를 인스턴스화할 필요가 없어지는 것 외에도 개체가 삭제된 후에도 수정된 정적 데이터를 다음에 사용할 수 있도록 저장하는 기능도 있습니다.

PHP 4와 호환되기 위해 정적 속성과 정적 메서드는 보호 또는 비공개로 지정되지 않은 경우 기본적으로 공개로 설정됩니다.

PHP 5.3.0부터 변수를 사용하여 클래스를 동적으로 호출할 수 있지만 변수 값은 self, parent 또는 static 키워드가 될 수 없습니다.

설명

정적 멤버는 객체를 인스턴스화할 필요가 없습니다. 클래스가 처음 로드될 때 메모리 공간이 할당되므로 정적 멤버를 직접 호출하는 것이 더 빠릅니다. 그러나 너무 많은 정적 멤버를 선언하면 공간이 항상 차지하게 되어 시스템 기능에 영향을 미치게 됩니다. 이 스케일은 연습의 축적을 통해서만 진정으로 파악할 수 있습니다!

Example
<?php
class website{  static $num="0";                         // 定义静态变量
  public function visit(){                 // 定义visit方法
    echo "您是第".self::$num."位访客!";   // 输出静态变量信息
    self::$num++;                          // 静态变量做自增运算
  }
}

echo &#39;第一次实例化调用:<br />&#39;;
$website=new website();                    // 实例化对象
$website->visit();                         // 调用对象$website的visit()方法
$website->visit();
$website->visit();

echo &#39;<br />第二次实例化调用:<br />&#39;;
$website2=new website();                   // 改变对象句柄实例化对象
$website2->visit();
$website2->visit();
$website2->visit();
?>
로그인 후 복사

브라우저에서 정적 속성과 정적 메서드를 선언하는 static 키워드를 사용하여 PHP의 표시 효과를 확인하세요. 아래 그림과 같이:

위 내용은 PHP는 static 키워드를 사용하여 정적 속성과 정적 메서드를 선언합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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