Menu
Coddy logo textTech

정적 메서드 및 속성

Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 91개 중 17번째.

속성이 정적일 수 있는 것처럼, 메서드도 개별 객체가 아니라 클래스 자체에 속할 수 있습니다. 정적 메서드는 먼저 인스턴스를 만들 필요 없이 클래스에서 직접 호출합니다.

static 키워드를 사용하여 정적 메서드를 선언하고, 클래스 이름과 :: 연산자를 사용하여 호출합니다:

<?php
class MathHelper {
    public static function add($a, $b) {
        return $a + $b;
    }
    
    public static function multiply($a, $b) {
        return $a * $b;
    }
}

echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);

출력:

8
8

정적 메서드는 정적 속성과 함께 사용할 때 효과적입니다. 일반적인 패턴은 정적 메서드를 사용하여 공유 클래스 데이터를 관리하는 것입니다.

<?php
class Counter {
    private static $count = 0;
    
    public static function increment() {
        self::$count++;
    }
    
    public static function getCount() {
        return self::$count;
    }
}

Counter::increment();
Counter::increment();
echo Counter::getCount();

출력:

2

정적 메서드는 객체 인스턴스가 없기 때문에 $this를 사용할 수 없습니다. 정적 속성과 다른 정적 메서드에는 self::를 사용해야만 액세스할 수 있습니다.

핵심 요점: 정적 메서드는 객체 상태가 필요하지 않은 유틸리티 함수나 class 수준의 데이터를 관리할 때 유용합니다. 객체를 인스턴스화하지 않고도 기능을 제공합니다.

challenge icon

챌린지

쉬움

객체를 인스턴스화할 필요 없이 정적 method와 property를 사용하여 고유한 식별자를 생성하는 ID generator system을 만들어 보겠습니다.

코드를 구성하기 위해 두 개의 file을 만듭니다:

  • IdGenerator.php: 정적 member만 사용하여 고유한 ID 생성을 관리하는 IdGenerator class를 Define합니다. class에는 $lastId에서 시작하는 private 정적 property 0"ID"로 설정된 private 정적 property $prefix가 있어야 합니다. last ID를 Increments하고 prefix와 새 ID를 combining한 formatted string을 반환하는 정적 method generate()를 Create합니다(예: "ID1", "ID2" 등). prefix를 Change하는 정적 method setPrefix($newPrefix)와 현재 $lastId 값을 Returns하는 정적 method getLastId()를 add합니다.
  • main.php: IdGenerator class file을 Include합니다. default prefix를 사용하여 두 개의 ID를 generate하고 각각을 own line에 Print합니다. 그런 다음 정적 method를 사용하여 prefix를 "USER"로 Change하고, ID를 두 개 더 generate한 뒤 각각을 Print합니다. 마지막으로 appropriate 정적 method를 호출하여 last ID number를 Print합니다.

정적 method는 ClassName::methodName()을 사용하여 class에서 직접 호출하며, class 내부에서는 self::$propertyName으로 정적 property에 access한다는 점을 기억하세요. object instance가 없으므로 정적 method에서는 $this를 사용할 수 없습니다.

출력에는 서로 다른 prefix를 사용하는 ID의 progression이 표시되어야 하며, 여러 method 호출에 걸쳐 정적 property가 그 값을 유지하는 방식이 드러나야 합니다.

직접 해보기

<?php

// IdGenerator 클래스 파일을 포함합니다
require_once 'IdGenerator.php';

// TODO: 기본 접두사를 사용하여 두 개의 ID를 생성하고 각각을 별도의 줄에 출력

// TODO: 정적 메서드를 사용하여 접두사를 "USER"로 변경

// TODO: 두 개의 ID를 더 생성하고 각각을 별도의 줄에 출력

// TODO: 적절한 정적 메서드를 사용하여 마지막 ID 번호를 출력

?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 PHP 컴파일러