프로그래밍/PHP

PHP에서 상수의 사용

채윤아빠 2019. 5. 21. 14:37
728x90
반응형



일반 상수 (Constant)사용

  상수란 단순한 값에 이름을 명명하여, 소스의 가독성을 높일 수 있는 유용한 기능입니다. 단순 숫자 65 만으로는 알파벳 "A" 인지, 나이 제한인지 구별을 할 수 없지만, "ALPHA_A", "LIMIT_AGE" 등으로 상수로 명명해 놓으면, 코드의 가독성이 아주 달라집니다.


  상수로 입력한 곳은 소스가 실행될 때, 상수를 정의할 때 입력한 값으로 대체되어 실행됩니다.


일반적으로 전역 상수(Global Constant)를 정의할 때 "define()" 구문을 이용합니다. 상수의 이름으로 사용할 수 있는 문자는 "^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$" 입니다. 일반적으로 상수는 영문일 경우 대문자만으로 명명합니다.


  아래 전역 상수를 정의하고 사용하는 관련 예제입니다.

<?php
// Valid constant names
define("FOO",     "something\n");
define("FOO2",    "something else\n");
define("FOO_BAR", "something more\n");
define("한글상수", "한글로도 상수 정의가 가능합니다.\n");

echo (FOO);
echo (FOO2);
echo (FOO_BAR);
echo (한글상수);

// Invalid constant names
define("2FOO",    "something2\n");

// This is valid, but should be avoided:
// PHP may one day provide a magical constant
// that will break your script
define("__FOO__", "something3\n"); 

echo (__FOO__);
?>

  위 예제의 실행 결과는 아래와 같습니다.

something
something else
something more
한글로도 상수 정의가 가능합니다.
something3

  위 예제에서 FOO 상수의 경우, 정의가 가능하지만 PHP 내부 상수들이 명명되는 규칙이 대부분 "_"로 시작하기 때문에 중복 등의 오류가 발생할 수 있으므로 사용하지 않는 것이 좋습니다.



클래스에서 상수 (Constant)사용

  클래스 내부에서 "const" 예약어를 이용하여 상수를 정의할 수 있습니다. PHP 7.1 부터 public, protected, private 등의 접근제어 지시자(visibility modifiers)를 이용하여 클래스 상수에 대한 접근성을 제한할 수 있습니다.

<?php
class MyClass
{
    const CONSTANT = 'constant value';

    function showConstant() {
        echo  self::CONSTANT . "\n";
    }
}

echo MyClass::CONSTANT . "\n";

$classname = "MyClass";
echo "MyClass"::CONSTANT . "\n";
echo $classname::CONSTANT . "\n"; // As of PHP 5.3.0

$class = new MyClass();
$class->showConstant();

echo $class::CONSTANT."\n"; // As of PHP 5.3.0
?>

  위 예에서 PHP 5.3.0부터 클래스 문자열 및 클래스 개체로부터 상수 접근이 가능해 졌습니다.
  다음은 위 예제를 실행한 결과입니다.

constant value
constant value
constant value
constant value
constant value

참고자료