PHP - 클래스 상수: 초보자 가이드
안녕하세요, PHP 개발자 지망생 여러분! 오늘 우리는 PHP의 클래스 상수 세계로 뛰어들어 볼 거예요. 프로그래밍에 새로운 사람이라면 걱정하지 마세요; 저는 수년 동안 수많은 학생들에게 이 개념을 단계별로 가르쳐 왔기 때문에, 여러분도 쉽게 이해할 수 있을 것입니다. 그럼 커피(또는 차, 만약 그게 당신의 취향이라면)를 한 잔 마시고, 시작해 보세요!
클래스 상수는 무엇인가요?
본격적인 내용에 들어가기 전에, 클래스 상수가 무엇인지 이해해 보겠습니다. 집(당신의 PHP 클래스)을 짓는 데 필요한 고정된 측정치가 필요할 거예요. 예를 들어, 천장의 높이와 같은 고정된 값을 상상해 보세요. 이게 바로 PHP에서의 클래스 상수입니다 - 클래스와 관련된 고정된 값입니다.
클래스 상수를 사용하는 이유는 무엇인가요?
- 클래스 내에서 고정된 값을 정의하는 방법을 제공합니다.
- 마법 숫자나 문자보다 가독성과 유지보수성이 뛰어납니다.
- 클래스 인스턴스를 생성하지 않고도 접근할 수 있습니다.
이제 클래스 상수를 어떻게 생성하고 사용하는지 보겠습니다.
클래스 상수의 예
간단한 예를 시작해 보겠습니다. 원을 나타내는 클래스를 만들어 보겠습니다.
class Circle {
const PI = 3.14159;
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function calculateArea() {
return self::PI * $this->radius * $this->radius;
}
}
// 클래스 상수 사용
echo Circle::PI; // 출력: 3.14159
// 원을 생성하고 면적을 계산
$myCircle = new Circle(5);
echo $myCircle->calculateArea(); // 출력: 78.53975
이를 해부해 보겠습니다:
- 우리는
Circle
클래스 내에서const
키워드를 사용하여PI
상수를 정의합니다. - 클래스 내에서는
self::PI
를 사용하여 상수에 접근할 수 있습니다. - 클래스 외에서는
Circle::PI
를 사용하여 상수에 접근할 수 있습니다. -
calculateArea()
메서드는 이 상수를 사용하여 원의 면적을 계산합니다.
클래스 상수를 표현식으로 사용
PHP 5.6 이상에서는 상수 표현식을 사용하여 클래스 상수를 정의할 수 있습니다. 이는 수학 연산이나 다른 상수를 사용하여 새로운 상수를 정의할 수 있음을 의미합니다. 예를 보겠습니다:
class MathConstants {
const PI = 3.14159;
const TAU = self::PI * 2;
const HALF_PI = self::PI / 2;
}
echo MathConstants::TAU; // 출력: 6.28318
echo MathConstants::HALF_PI; // 출력: 1.570795
이 예제에서 우리는 TAU
와 HALF_PI
를 PI
의 값에 기반하여 정의하고 있습니다. 이는 상수가 서로 관련되어 있을 때 매우 유용합니다.
클래스 상수의 가시성修飾자
PHP 7.1부터는 클래스 상수에 가시성修飾자를 사용할 수 있습니다. 이를 통해 상수의 접근성을 제어할 수 있습니다. 예제를 보겠습니다:
class Seasons {
public const SPRING = 'Spring';
protected const SUMMER = 'Summer';
private const AUTUMN = 'Autumn';
const WINTER = 'Winter'; // 수정자 없음, 기본적으로 public
public function getSummer() {
return self::SUMMER;
}
private function getAutumn() {
return self::AUTUMN;
}
}
$seasons = new Seasons();
echo Seasons::SPRING; // 괜찮습니다, public입니다
echo Seasons::WINTER; // 괜찮습니다, 기본적으로 public
echo $seasons->getSummer(); // 괜찮습니다, public 메서드를 통해 protected 상수 접근
// echo Seasons::SUMMER; // 오류 발생, SUMMER는 protected입니다
// echo Seasons::AUTUMN; // 오류 발생, AUTUMN은 private입니다
가시성修飾자를 해부해 보겠습니다:
-
public
: 어디서든 접근할 수 있습니다. -
protected
: 클래스 내와 자식 클래스 내에서만 접근할 수 있습니다. -
private
: 클래스 내에서만 접근할 수 있습니다.
수정자가 지정되지 않으면 상수는 기본적으로 public입니다.
클래스 상수의 실용적인 사용 사례
이제 클래스 상수가 어떻게 작동하는지 이해했으므로, 실제 사용 사례를 몇 가지 살펴보겠습니다:
-
구성 설정:
class DatabaseConfig { const HOST = 'localhost'; const USERNAME = 'root'; const PASSWORD = 'secretpassword'; const DATABASE = 'myapp'; }
-
오류 코드:
class ErrorCodes { const NOT_FOUND = 404; const SERVER_ERROR = 500; const UNAUTHORIZED = 401; }
-
Enum-like 구조:
class UserRoles { const ADMIN = 'admin'; const EDITOR = 'editor'; const SUBSCRIBER = 'subscriber'; }
좋은 관행과 팁
- 대문자 사용: 상수를 이름을 정의할 때 대문자로 사용하는 것이 관례입니다.
- 과도한 사용 피하기: 상수는 유용하지만, 진정으로 고정된 값인 경우에만 사용하세요.
- 문서화: 상수의 목적이 명확하지 않다면 설명을 추가하는 것이 좋습니다.
결론
이제 여러분은 PHP 클래스 상수의 세계를 여행했습니다. 기본적인 사용에서 가시성修飾자까지, 클래스 상수를 효과적으로 사용할 수 있는 도구를 가지고 있습니다. 상수는 집의 기초와 같아서, 코드의 안정성과 일관성을 제공합니다.
PHP 여정을 계속하면서 더 재미있는 기능을 많이 탐험하게 될 것입니다. 하지만 지금은 클래스 상수를 마스터한 것을 축하드립니다. 계속 코딩하고, 배우고, 특히 즐기세요!
미래의 PHP 거장 여러분, 행복하게 코딩하세요! ?????
메서드 | 설명 |
---|---|
const CONSTANT_NAME = value; |
클래스 상수 정의 |
ClassName::CONSTANT_NAME |
클래스 외에서 클래스 상수 접근 |
self::CONSTANT_NAME |
클래스 내에서 클래스 상수 접근 |
public const CONSTANT_NAME = value; |
public 클래스 상수 정의 (PHP 7.1+) |
protected const CONSTANT_NAME = value; |
protected 클래스 상수 정의 (PHP 7.1+) |
private const CONSTANT_NAME = value; |
private 클래스 상수 정의 (PHP 7.1+) |
Credits: Image by storyset