본문 바로가기
개발 기초/PHP

PHP - 정적(static) 멤버

by 륀두 2020. 4. 28.
반응형

클래스를 정의할 때 static 키워드를 사용한 프로퍼티와 메소드는 해당 클래스의 인스턴스를 생성하지 않아도 접근할 수 있게 됩니다.

이러한 프로퍼티와 메소드를 정적 멤버(static member)라고 합니다.

이러한 정적 멤버의 특징은 다음과 같습니다.

  1. static 키워드로 선언된 정적 프로퍼티는 인스턴스화된 객체에서는 접근할 수 없습니다.
  2. static 키워드로 선언된 정적 메소드는 인스턴스화된 객체에서도 접근할 수 있습니다.
  3. 정적 메소드 내에서는 $this 의사 변수를 사용할 수 없습니다.
class StaticMember
{
    public static $staticProperty = "static property";
    public static function showProperty()
    {
        echo self::$staticProperty;."<br>";
    }
}
 

echo StaticMember::showProperty();  // 호출 가능

echo StaticMember::$staticProperty; // 접근 가능

 
$var = new StaticMember();          // 인스턴스 생성
echo $var->showProperty();          // 호출 가능

//echo $var->$staticProperty;       // 접근 불가능

 

범위 지정 연산자(::)

클래스의 프로퍼티나 메소드에 접근하기 위해서는 인스턴스를 생성하고, 화살표 연산자(->)를 사용해야 합니다.

하지만 단순히 클래스의 정의 내에서 프로퍼티나 메소드를 사용하고 싶을 때는 범위 지정 연산자(::)를 사용할 수 있습니다.

범위 지정 연산자(::)는 클래스의 상수, 정적(static) 멤버 또는 재정의된 멤버에 접근할 수 있게 해줍니다.

또한, 다음 키워드를 사용하면 클래스의 정의 내에서 특정 프로퍼티나 메소드에 접근할 수 있습니다.

  1. self : 자기 자신에 접근할 때
  2. parent : 부모 클래스에 접근할 때
echo OtherClassName::CONSTANT;

echo self::$property;

echo parent::CONSTANT;
반응형

'개발 기초 > PHP' 카테고리의 다른 글

PHP - 오버로딩  (0) 2020.04.30
PHP - 인터페이스  (0) 2020.04.28
PHP - 오버라이딩  (0) 2020.04.28
PHP - 상속  (0) 2020.04.28
PHP - 클래스 사용  (0) 2020.04.28