문법

상수는 const 키워드를 사용하거나 define() 함수를 사용하여 정의할 수 있습니다. define()을 사용하면 상수를 임의의 표현식으로 정의할 수 있지만 const 키워드에는 다음 단락에 설명된 대로 제한 사항이 있습니다. 상수는 한 번 정의되면 절대 변경하거나 정의 해제할 수 없습니다.

const 키워드를 사용할 때 스칼라(bool, int, float 및 string) 표현식과 스칼라 표현식만 포함하는 상수 배열만 허용됩니다. 상수를 리소스로 정의하는 것은 가능하지만 예기치 않은 결과를 초래할 수 있으므로 피해야 합니다.

상수의 값은 이름을 지정하여 간단히 액세스할 수 있습니다. 변수와 달리 상수에는 $가 붙지 않습니다. 상수의 이름을 동적으로 얻은 경우 constant() 함수를 사용하여 상수의 값을 읽는 것도 가능합니다. get_defined_constants()를 사용하여 정의된 모든 상수 목록을 가져옵니다.

참고: 상수 및 (전역) 변수는 다른 네임스페이스에 있습니다. 이것은 예를 들어 true$TRUE가 일반적으로 다르다는 것을 의미합니다.

undefined 상수가 사용되면 오류가 발생합니다. PHP 8.0.0 이전에는 정의되지 않은 상수가 베어 단어 문자열로 해석됩니다. 즉, (CONSTANT 대 "CONSTANT"). 이 대체는 PHP 7.2.0부터 더 이상 사용되지 않으며 발생하면 E_WARNING 수준의 오류가 발생합니다. PHP 7.2.0 이전에는 E_NOTICE 레벨의 오류가 대신 발행되었습니다. $foo[bar]가 잘못된 이유에 대한 수동 항목도 참조하십시오(bar가 상수가 아닌 경우). 이것은 (fully) qualified constants에는 적용되지 않으며, undefined인 경우 항상 오류가 발생합니다.

참고: 상수가 설정되었는지 확인하려면 defined() 함수를 사용하십시오.

다음은 상수와 변수의 차이점입니다.

  • 상수 앞에는 달러 기호($)가 없습니다.
  • 상수는 변수 범위 지정 규칙에 관계없이 어디에서나 정의하고 액세스할 수 있습니다.
  • 상수는 일단 설정되면 재정의하거나 정의 해제할 수 없습니다. 그리고
  • 상수는 스칼라 값이나 배열로만 평가될 수 있습니다.

예제 #1 상수 정의

                  
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // Emits an Error: Undefined constant "Constant"
               // Prior to PHP 8.0.0, outputs "Constant" and issues a warning.
?>
                  
                

예제 #2 const 키워드를 사용하여 상수 정의

                  
<?php
// Simple scalar value
const CONSTANT = 'Hello World';

echo CONSTANT;

// Scalar expression
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;

const ANIMALS = array('dog', 'cat', 'bird');
echo ANIMALS[1]; // outputs "cat"

// Constant arrays
define('ANIMALS', array(
    'dog',
    'cat',
    'bird'
));
echo ANIMALS[1]; // outputs "cat"
?>
                  
                

메모: define()을 사용하여 상수를 정의하는 것과 달리 const 키워드를 사용하여 정의된 상수는 컴파일 타임에 정의되기 때문에 최상위 범위에서 선언해야 합니다. 이는 함수, 루프, if 문 또는 try/catch 블록 내에서 선언할 수 없음을 의미합니다.

기타