1. "Fatal error: Cannot use ‘self’ outside a class"
이 오류는 클래스 외부에서 self
키워드를 사용하려고 할 때 발생합니다.
샘플 소스 코드:
const MAX_VALUE = 100;
class Math {
const MIN_VALUE = 0;
public function printConstants() {
echo self::MIN_VALUE . ', ' . self::MAX_VALUE;
}
}
$math = new Math();
$math->printConstants();
해결 방법:
self
키워드는 클래스 내부에서만 사용할 수 있습니다. 위의 예제에서는printConstants()
메서드 내에서 클래스 외부의 상수MAX_VALUE
에 접근하려고 하고 있으므로,self
키워드 대신 클래스 이름을 사용하여 접근해야 합니다. 예를 들어,echo self::MIN_VALUE . ', ' . Math::MAX_VALUE;
와 같이 수정해야 합니다.
2. "Notice: Undefined class constant accessed as static property"
이 알림은 정의되지 않은 클래스 상수를 정적 속성처럼 접근하려고 할 때 발생합니다.
샘플 소스 코드:
class Math {
const PI = 3.14;
}
echo Math::$PI;
해결 방법:
- 클래스 상수는 정적 속성이 아니므로, 정적 속성처럼 접근할 수 없습니다. 위의 예제에서는
$PI
를 정적 속성처럼 접근하려고 하고 있으므로, 해당 코드를 수정하여 클래스 이름과::
연산자를 사용하여 상수에 접근해야 합니다. 예를 들어,echo Math::PI;
와 같이 수정해야 합니다.
3. "Fatal error: Cannot redeclare class constant"
이 오류는 같은 클래스 안에서 상수를 재선언하려고 할 때 발생합니다.
샘플 소스 코드:
class Math {
const PI = 3.14;
const PI = 3.14159;
}
해결 방법:
- 같은 클래스에서 상수를 재선언할 수 없습니다. 위의 예제에서는
Math
클래스에서PI
상수를 두 번 선언하고 있으므로, 해당 상수의 재선언을 제거해야 합니다. 한 번 선언된 상수는 다시 선언할 필요가 없습니다.