클래스 사용법 – 5.범위연산자

범위연산자(범위 지정 연산자; scope resolver, scope resolution operator)란?

PHP4에서만 지원되며 클래스와 메소드 또는 클래스와 멤버변수를 연결시켜 주는 일로 범위연산자 뒤에 나오는 메소드와 멤버변수의 스코프(사용범위)를 지정하는 일을 하는 것입니다.

  • 클래스명::메소드명
  • 클래스명::멤버변수명

범위연산자 사용목적

  • 인스턴스되지 않은 클래스의 메소드에 접근할 때
  • 부모클래스의 메소드와 멤버변수에 접근할 때

인스턴스되지 않은 클래스에 있는 메소드에 접근할 때

아직 클래스 A에 대한 객체가 생성되기 전이지만 범위연산자를 이용하면 일반 함수처럼 실행시킬 수 있습니다. 그러나 클래스 A에 대한 객체가 전혀 생성되어 있지 않으므로 클래스 외부에서 이 함수에 접근할 때는 이 함수 내에 $this 객체를 사용해서는 안됩니다. 물론 일반 함수와 마찬가지로 지역 변수 및 전역 변수를 사용할 수는 있습니다.

위의 예제를 보면 아직 클래스 A에 대한 객체가 생성되지 않았으므로 멤버변수 $var에 대한 기억장소가 할당되지도 않았고 더구나 초기값을 설정할 수도 없습니다. 그러니 아무리 범위연산자를 이용하여 메소드 example()에 접근한다해도 멤버변수 $var의 초기값을 나타낼 수는 없을 것입니다. 실험해 본 바로는 이 경우 $this->var의 값이 NULL로 처리되는 것 같습니다.

부모클래스의 메소드에 접근할 때

이 예의 출력결과를 보면 아래와 같이 나타날 것입니다.

범위연산자는 클래스가 상속되었을 때 재정의되기 전의 부모클래스에 있는 메소드에 접근할 때 유용하게 사용될 수 있습니다.

부모클래스의 멤버변수에 접근할 때

php.net의 문서 설명과는 달리 아직 공개되지 않는 어떤 방법이 있는 지는 모르겠으나 부모클래스의 멤버변수로 접근하는 방법에 대하여는 문서화되지 않은 것 같습니다.

답글 남기기