PHP 기본 문법 – 클래스와 객체 – 3 – 접근 제어자 (public, private, protected)

PHP 기본 문법 - 클래스와 객체 - 3 - 접근 제어자 (public, private, protected)
PHP 기본 문법 – 클래스와 객체 – 3 – 접근 제어자 (public, private, protected)

PHP 기본 문법 – 클래스와 객체 – 4 – 정적 멤버 (static 키워드)

소제목: 정적 멤버란 무엇인가요?

정적 멤버(static 키워드)는 PHP 클래스에서 사용되는 특별한 유형의 멤버입니다. 클래스의 인스턴스에 속하는 인스턴스 멤버와 달리, 정적 멤버는 클래스 자체에 속하며 모든 인스턴스에서 공유됩니다. 즉, 정적 멤버는 클래스의 인스턴스와 상관없이 클래스 자체에 대한 데이터와 동작을 나타냅니다.

예시: 정적 멤버 사용하기

아래 예시는 정적 멤버를 사용하여 성적 관리 클래스를 구현하는 것을 보여줍니다.

class ScoreManager {
    public static $passingGrade = 60;
    private static $totalStudents = 0;

    public static function increaseTotalStudents() {
        self::$totalStudents++;
    }

    public static function getTotalStudents() {
        return self::$totalStudents;
    }

    public static function isPassing($score) {
        return $score >= self::$passingGrade;
    }
}

ScoreManager::increaseTotalStudents();
ScoreManager::increaseTotalStudents();

echo '전체 학생 수: ' . ScoreManager::getTotalStudents() . '명<br>';
echo '합격 기준 점수: ' . ScoreManager::$passingGrade . '점<br>';

$score = 75;
if (ScoreManager::isPassing($score)) {
    echo "{$score}점은 합격입니다!";
} else {
    echo "{$score}점은 불합격입니다.";
}

정적 멤버와 정적 메서드의 활용

정적 멤버와 정적 메서드는 다양한 상황에서 유용하게 활용될 수 있습니다. 이를 비유적으로 설명하자면, 정적 멤버는 클래스의 “전역 변수”와 같다고 볼 수 있습니다. 전역 변수는 어디서든 접근할 수 있고 값을 공유할 수 있는데, 클래스의 정적 멤버도 동일한 개념입니다. 그리고 정적 메서드는 전역 함수처럼 클래스와 관련된 동작을 수행하며, 클래스의 인스턴스 없이 호출할 수 있습니다.

예를 들어, 위 예시에서 increaseTotalStudents()getTotalStudents() 메서드는 정적 멤버인 $totalStudents를 조작하고 반환하는 역할을 합니다. 이렇게 정적 멤버와 메서드를 사용하면 모든 인스턴스가 동일한 $totalStudents 변수에 접근하여 학생 수를 증가시킬 수 있습니다.

주의해야 할 점

정적 멤버와 정적 메서드는 클래스의 인스턴스와는 별개로 동작하므로 몇 가지 주의해야 할 점이 있습니다.

  1. 정적 멤버에 접근할 때에는 $ 기호를 사용하지 않고 self::를 사용합니다.
  2. 정적 멤버는 인스턴스 멤버에서 접근할 수 없습니다. 반대로, 인스턴스 멤버에서는 $this를 사용하여 접근할 수 있지만 권장되지 않습니다.
  3. 정적 멤버와 메서드는 상속될 수 있습니다. 자식 클래스에서는 부모 클래스의 정적 멤버와 메서드를 재정의할 수 있습니다.
  4. 정적 멤버를 과도하게 사용하는 것은 좋지 않습니다. 적절하게 사용하고 클래스의 목적과 의도에 맞게 설계해야 합니다.

이러한 주의사항을 숙지하고 정적 멤버를 활용하면, 클래스 내에서 공유되어야 할 데이터와 동작을 간편하게 관리할 수 있습니다.

이상으로 PHP의 기본 문법 중 클래스와 객체의 정적 멤버(static 키워드)에 대해 알아보았습니다. 정적 멤버는 클래스 자체에 속하며 모든 인스턴스에서 공유되는 특징을 가지고 있습니다. 이를 통해 데이터와 동작을 클래스 내에서 쉽게 관리할 수 있습니다. 정적 멤버와 메서드를 적절하게 활용하여 보다 유지보수가 용이하고 효율적인 코드를 작성해보세요!

주의해야 할 점 정리

  1. 정적 멤버에 접근할 때에는 $ 기호 대신 self::를 사용합니다.
  2. 정적 멤버는 인스턴스 멤버에서 접근할 수 없으며, 인스턴스 멤버에서는 $this를 사용하지 않는 것이 좋습니다.
  3. 정적 멤버와 메서드는 상속될 수 있으므로 재정의할 수 있습니다.
  4. 정적 멤버를 적절하게 사용하고 클래스의 목적과 의도에 맞게 설계해야 합니다.

프로그래밍에서 정적 멤버의 활용은 중요한 개념이므로, 실제로 코드를 작성하고 실험해보며 이해하는 것이 좋습니다. 새로운 프로그래밍 지식을 습득하면서 블로그에 글을 작성하시는 것은 매우 훌륭한 아이디어입니다. 앞으로의 학습과 글쓰기 활동에 힘을 주시기 바랍니다!

답글 남기기