> 백엔드 개발 > PHP 튜토리얼 > PHP 클래스의 정적 메소드 및 정적 변수

PHP 클래스의 정적 메소드 및 정적 변수

WBOY
풀어 주다: 2016-07-29 09:02:10
원래의
1146명이 탐색했습니다.

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

그럼 $object->…을 사용하는 것과 class::…를 사용하는 것의 차이점을 살펴보겠습니다.
1. $object->…를 사용하는 경우 생성자를 실행해야 합니다. 객체를 생성합니다.
2. 객체를 생성하기 위해 생성자를 실행하지 않고 정적 메서드/변수를 호출하려면 class::...를 사용합니다.
3. 비정적 메서드를 호출하려면 class::...를 사용합니다. 변수가 필요하지 않으며 객체를 생성하기 위해 생성자를 실행할 필요가 없습니다.

그럼 이상한 점이 나오네요. 2와 3이 같으니 정적 메소드/변수가 존재하는 이유가 무엇인가요?
차이점은 다음과 같습니다.
1. 정적 변수
정적 멤버는 하나의 변수 값만 유지하며 이 변수 ​​값은 모든 인스턴스에 유효합니다. 즉, 모든 인스턴스가 이 멤버를 공유합니다.
2. 정적 메서드
정적 메서드는 class::...를 사용하여 직접 호출할 수 있지만, 비정적 메서드는 앞서 언급한 것처럼 class::.. 메서드를 사용하여 호출하기 전에 특정 제한 사항을 충족해야 합니다.

위 내용을 포함해 PHP 클래스의 정적 메소드와 정적 변수를 소개하고 있는데, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

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