[php] static 멤버 및 범위지정연산자
정적(static) 멤버 및 범위지정연산자(::)
정적(static) 멤버
PHP4에서의 범위연사자와 유사한 기능으로 클래스의 인스턴스 생성없이도 클래스에 접근 가능하게 해 주는 역활을 합니다.
특징은 아래와 같습니다.
- static 키워드로 선언된 정적 프로퍼티는 인스턴스화된 객체에서는 접근할 수 없습니다.
- static 키워드로 선언된 정적 메소드는 인스턴스화된 객체에서도 접근할 수 있습니다.
- 정적 메소드 내에서는 $this 의사 변수를 사용할 수 없습니다, 대신 "self::" 를 이용합니다.
class StaticMember
{
public static $staticProperty = "static property";
public static function showProperty()
{
return self::$staticProperty;
}
}
StaticMember::showProperty(); // 호출 가능
StaticMember::$staticProperty; // 접근 가능
$member = new StaticMember(); // 인스턴스 생성
$member->showProperty(); // 호출 가능
$member->$staticProperty; // 접근 불가능
범위 지정 연산자(::)
범위 지정 연산자(::)는 클래스의 상수, 정적(static) 멤버 또는 재정의된 멤버에 접근할 수 있게 해줍니다.
또한, 다음 키워드를 사용하면 클래스의 정의 내에서 특정 프로퍼티나 메소드에 접근할 수 있습니다.
- self : 자기 자신에 접근할 때
- parent : 부모 클래스에 접근할 때
OtherClass::CONSTANT; // 정적 함수 내에서 다른 클래스의 정적함수나 상수 호출시
self::$property; // 정적 함수내에서 다른 함수 호출시
parent::CONSTANT; // 정적 함수내에서 부모 클래스의 정정 함수사 상수 호출시