> 백엔드 개발 > PHP 튜토리얼 > 참고: 수업

참고: 수업

WBOY
풀어 주다: 2016-08-08 09:32:21
원래의
985명이 탐색했습니다.


정적 멤버는 클래스의 인스턴스가 아닌 전체 클래스에 속하는 것으로 간주할 수 있습니다. 그리고 this 변수 값은 모든 인스턴스에 유효합니다. 즉, 모든 인스턴스가 이 변수를 공유합니다.

$this는 현재 인스턴스만 나타냅니다. , self::는 클래스 자체를 나타냅니다. Self::는 클래스 외부의 코드에서 사용할 수 없으며 self::는 상속 트리 계층 구조에서 해당 위치를 식별할 수 없습니다. 즉, 확장 클래스에서 self:: 범위를 사용할 때 self::는 기본 클래스에 선언된 메서드를 호출할 수 있지만 항상 확장 클래스에서 재정의된 메서드를 호출합니다. $this와 달리 정적 변수를 사용할 때는 범위 한정자 뒤에 $ 기호를 추가해야 합니다.

확장 클래스에서 기본 클래스 메서드가 재정의되면 상위 범위를 사용하여 메서드를 호출합니다. 기본 클래스에 정의되어 있습니다. 정적 멤버는 상위 클래스에만 속할 수 있습니다. 하위 클래스와 상위 클래스 모두에서 멤버가 선언된 경우 parent:를 사용하여 하위 클래스의 상위 클래스에 있는 변수에 액세스할 수 있습니다. 경우에 따라 상위 클래스의 정적 멤버와 하위 클래스의 정적 멤버가 다른 값을 보유합니다.
정적으로 멤버에 액세스하려면 :: 연산자 왼쪽에 클래스 이름을 쓰면 클래스 인스턴스 생성을 피할 수 있습니다. 클래스를 인스턴스화하는 코드를 생략할 뿐만 아니라 클래스의 각 인스턴스가 시스템 리소스의 작은 부분을 호출하기 때문에 더 재미있습니다.


:: 연산자를 사용하여 멤버 변수에 접근할 때 $ 기호 사용에 주의해야 합니다. . PHP는 현재 동적 정적 변수의 사용을 지원하지 않기 때문에 즉, 가변 정적 변수를 지원하지 않습니다. $this->$var를 사용할 때 접근되는 멤버는 $var에 포함된 변수의 값입니다. $ 기호를 사용하지 않고 변수에 접근하면 실제로는 클래스의 상수를 찾게 되며 그 상수는 $this Came을 전달할 수 없습니다. 방문하다.
PHP6에서 제안한 static:: 범위를 사용하면 self:: 및 parent::를 사용할 필요가 없습니다. 함수를 구현하는 최종 클래스를 가리키려면 static::을 사용할 수 있습니다. 이 한정자는 코드가 실행되기 전에 상속 계층 구조에서 마지막 클래스의 멤버를 계산하며 이를 허용합니다. 정적 변수는 하위 클래스에서 재정의될 수 있으며 이는 상위 클래스에 선언된 함수에서도 수행될 수 있습니다.

정적 메서드와 비정적 메서드의 중요한 차이점: 정적 메서드를 호출할 때 더 이상 인스턴스가 필요하지 않습니다. 수업의.


정적 메서드와 비정적 메서드 사용 원칙: 메서드에 $this 변수가 포함되어 있지 않으면 정적 메서드를 사용해야 합니다. 클래스의 인스턴스가 필요하지 않은 경우 클래스 인스턴스화 작업을 피하기 위해 정적 클래스를 사용할 수도 있습니다. 정적 메서드는 클래스에 속하지 않기 때문에 $this 변수를 사용할 수 없습니다. 특정 인스턴스.

instanceof는 객체가 클래스의 인스턴스인지, 클래스의 하위 클래스인지, 인터페이스를 구현하는지 판단하고, 해당 연산

클래스 도우미 기능

boolean class_exists(string class_name)
string get_class(object object)                                 //确定对象的上下文
array get_class_methods(mixed class_name)
array get_class_vars(string class_name)                         //定义的字段
array get_declared_classes(void)                              //当前执行脚本中定义的所有类名
array get_object_vars(object object)
string get_parent_class(mixed object)
boolean interface_exists(string interface_name[, boolean autoload])
boolean is_subclass_of(object object, string class_name)
boolean method_exists(object object, string method_name)
로그인 후 복사



__autoload 함수, 스크립트에 정의되지 않은 클래스를 참조하면 자동으로 함수가 호출됩니다.

newObject = clone oldObject;
__clone() 메서드는 객체의 복제 동작을 조정하는 데 사용되며 코드 복제 작업 중에 실행됩니다.

메서드 오버로딩, 연산자 오버로딩, 다중 상속을 지원하지 않습니다

위 내용은 Note: Class 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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