define() 함수를 사용해서 상수를 정의할 수 있습니다. PHP 5.3.0부터 클래스 정의 밖에서 const 키워드를 사용할 수도 있습니다. 상수가 한번 정의되면, 변경하거나 해제(undefine)할 수 없습니다.
PHP 5.6 이전에는 스칼라 데이터(boolean, integer, float and string)만 상수로 등록할 수 있습니다. 5.6 이후에는 스칼라 표현식을 상수로 정의할 수 있고, array 또한 등록할 수 있습니다. 또, resource를 상수로 정의할 수는 있지만 예상치 못한 문제를 야기할 수 있으므로 사용하지 않을 것을 권고합니다.
단순히 상수명을 써서 상수값을 얻을 수 있다. 변수와는 달리 $가 상수명 앞으로 오면 안된다 동적으로 상수명을 취하려한다면 constant()함수로 상수값을 가져올수 있다. 정의된 모든 상수 목록을 구하려면 get_defined_constants() 함수를 쓴다.
해제된 상수를 사용한다면, PHP는 상수명 자체를 쓴것이라고 가정할것이다 즉,string으로 인식할것이다. (CONSTANT vs "CONSTANT") E_NOTICE로 이런 일이 발생했는지 알수 있다. 왜 $foo[bar]가 잘못됐는지 (bar를 상수로 define() 하지않았다면) 매뉴얼을 참고한다. 단순히 상수가 설정되었는지만 확인하려 한다면 defined()함수를 쓰면 됩니다.
다음은 상수와 변수의 차이점이다:
- 상수는 이름 앞에 달러표시($)가 없다.
- PHP 5.3 이전에는,단순한 할당 연산이 아니라 define() 함수로만 정의될수 있다.
- 상수는 변수의 유효범위 규칙과는 상관없이 어느곳에서든 정의되거나 값을 취할수 있다.
- 상수는 한번 설정되면 재정의하거나 해제할수 없을것이다; 그리고
- PHP 5.6 이후에서는, 상수는 스칼라 값 혹은 array의 값으로만 평가됩니다. 상수 스칼라 표현식에 array를 쓸 수 있습니다. (예를들어, const FOO = array(1,2,3)[0];) 하지만 최종 결과는 스칼라 값이어야 합니다.
Example #1 상수 정의하기
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // "Hello world."을 출력한다
echo Constant; // "Constant"를 출력하고 경고가 뜬다.
?>
Example #2 const 키워드를 사용해서 상수 정의하기
<?php
// PHP 5.3.0부터 작동
const CONSTANT = 'Hello World';
echo CONSTANT;
// PHP 5.6.0 부터 작동
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
?>
참고: 클래스 상수.
User Contributed Notes 1 note
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
'WEB' 카테고리의 다른 글
PHP 메모리 부족 (0) | 2018.05.14 |
---|---|
날짜 계산(어제, 내일, 일주일 전, 한달 전...) (0) | 2018.05.14 |
Running latest Apache 2.4 with PHP 7.0 on CentOS 6 (0) | 2018.05.08 |
Error message Strict standards: Non-static method should not be called statically in php (0) | 2018.05.05 |
Deprecated: Function split() is deprecated. How to fix this statement? [duplicate] (0) | 2018.05.05 |