정적 속성에는 클래스에 캡슐화할 데이터가 포함되어 있으며 클래스의 모든 인스턴스에서 공유할 수 있습니다. 실제로 고정 클래스에 속하고 액세스 방법을 제한하는 것 외에도 클래스의 정적 속성은 함수의 전역 변수와 매우 유사합니다.
다음 예에서는 정적 속성인 Counter::$count를 사용합니다. 이는 Counter 클래스에 속하며 Counter 인스턴스에는 속하지 않습니다. 이것을 참조하는 데 사용할 수는 없지만 self 또는 다른 유효한 명명 표현을 사용할 수 있습니다. 예제에서 getCount 메소드는 Counter::$count가 아니라 self::$count를 반환합니다.
정적 메서드는 클래스에 의해 캡슐화되어야 하는 함수를 구현하며 특정 개체와 관련이 없습니다. 정적 메서드는 전역 함수와 매우 유사하며 클래스의 속성에 완전히 액세스하거나 클래스의 인스턴스에서 액세스할 수 있습니다.
이전 예에서 getCount는 ->로 호출되는 일반적인 메소드이지만, 메소드는 사용되지 않습니다. 어떤 경우에는 유효한 객체가 없을 때 이를 호출하고 싶다면 정적 메소드를 사용해야 합니다. PHP는 객체에서 호출하더라도 정적 메소드 내에 이 변수를 생성하지 않습니다.
예제 6.7 6.3에서 getCount를 변경합니다. Static 키워드는 인스턴스가 -> 연산자를 사용하여 getCount를 호출하는 것을 방지하지 않습니다. 그러나 this-> 호출하면 오류가 발생합니다.
//6.3 예제는 섹션 4 - 생성자와 소멸자의 예제를 참조합니다(이전 기사 참조). 두 예제를 비교하면 //정적 메소드와 일반 메소드.
생성 여부를 확인하여 정적 호출인지 비정적 호출인지 표시하는 메소드를 작성할 수 있습니다.
클래스는 상수 속성을 정의할 수도 있습니다. 공용 정적을 사용할 필요는 없으며 상수 속성은 항상 클래스의 속성입니다. .
목록 6.7 정적 멤버
코드 복사 코드는 다음과 같습니다.
클래스 카운터
{
private static $count = 0
const VERSION = 2.0
function __construct()
{
self::$count
}
함수 __destruct()
{
Self::$count--
}
static function getCount()
{
return self::$count; 인스턴스를 생성하면 __construct()는
$c = new Counter();
//Output 1
print(Counter::getCount() . "n")/ /를 실행합니다.
print("사용된 버전: " . Counter::VERSION . "n");
?>
클래스의 버전 속성을 출력합니다.
위 내용은 객체 모델의 정적 멤버인 PHP 50 객체 모델에 대한 심층 탐색을 소개하며, 객체 모델의 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.