티스토리 뷰

PHP

PHP 상수

babydeveloper 2022. 4. 15. 14:15

 

상수

상수(constant)

상수(constant)란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미합니다.

하지만 상수가 변수와 다른 점은 한 번 선언되면, 스크립트가 실행되는 동안 그 데이터를 변경하거나 해제(undefined)할 수 없다는 점입니다.

define() 함수

PHP에서는 define() 함수를 사용하여 상수를 선언할 수 있습니다.

 

define() 함수의 원형은 다음과 같습니다.

원형

define(상수이름상숫값대소문자구분여부)

 

이 함수는 첫 번째 인수로 상수의 이름을 전달받고, 두 번째 인수로 그 값을 전달받습니다.

세 번째 인수는 상수의 이름이 대소문자를 구분하는가를 설정하며, 기본값은 false로 대소문자를 구분합니다.

 

예제
define("PHP", "PHP 수업에 잘 오셨습니다!<br>"); // 대소문자를 구분함.(기본 설정)
echo PHP; // PHP 수업에 잘 오셨습니다!

echo php; // php
define("PHP", "<br>PHP 수업에 잘 오셨습니다!", true); // 대소문자를 구분하지 않음.
echo php; // PHP 수업에 잘 오셨습니다!

echo Php; // PHP 수업에 잘 오셨습니다!​

 

 

이렇게 선언된 상수는 스크립트의 어디에서라도 참조할 수 있습니다.

단, 해당 상수가 선언되기 이전의 스크립트 영역에서는 해당 상수를 참조할 수 없습니다.

예제
function defFunc()

{
    echo PHP; // PHP
    define("PHP", "PHP 수업에 잘 오셨습니다!");

    echo PHP; // PHP 수업에 잘 오셨습니다!
}

defFunc();
echo PHP;     // PHP 수업에 잘 오셨습니다!​

 

 

위의 예제에서 상수가 선언되기 전의 영역에서 호출한 echo() 함수는 해당 상수의 값을 참조하지 못합니다.

또한, 함수 내부에서 선언된 상수가 함수의 호출이 종료된 후에도 사용할 수 있음을 보여줍니다.

마법 상수(magic constants)

PHP는 어떤 스크립트에서도 사용할 수 있는 미리 정의된 다양한 상수를 제공합니다.

 

다음 예제는 PHP에서 미리 정의된 모든 상수를 출력해 주는 예제입니다.

예제
echo "<pre>";
print_r(get_defined_constants(true));
echo "</pre>";​

 

 

PHP는 위와 같이 미리 정의된 상수 이외에도 어디에 사용하느냐에 따라 용도가 변경되는 8개의 마법 상수를 제공합니다.

이러한 마법 상수(magic constants)는 대소문자를 구분하지 않습니다.

상수 이름설명

상수 이름 설명
__LINE__ 파일의 현재 줄 번호를 반환함.
__FILE__ 파일의 전체 경로와 이름을 반환함.
include 내부에서 사용할 경우 include된 파일명을 반환함.
__DIR__ 파일의 디렉터리를 반환함.
포함한 파일 안에서 사용할 경우 포함된 파일의 디렉터리를 반환함.
dirname(__FILE__)과 같은 결과를 반환함.
__FUNCTION__ 함수의 이름을 반환함.
__CLASS__ 클래스의 이름을 반환함. 클래스 이름은 대소문자를 구분함.
__TRAIT__ 트레이트(trait)의 이름을 반환함.
트레이트의 이름은 트레이트를 선언한 네임스페이스를 포함함.
__METHOD__ 클래스의 메소드 이름을 반환함.
__NAMESPACE__ 현재 네임스페이스의 이름을 반환함.

 

예제
function magicCons() {
    echo __LINE__;     // 파일의 현재 줄 번호를 반환함.
    echo __FUNCTION__; // 함수의 이름을 반환함.
    echo __METHOD__;   // 클래스의 메소드 이름을 반환함.
}
magicCons();

 

반응형

'PHP' 카테고리의 다른 글

PHP 기본 타입  (1) 2022.04.15
PHP 변수의 종류  (0) 2022.04.15
PHP 변수  (0) 2022.04.14
PHP 문법  (0) 2022.04.14
PHP 동작원리!  (0) 2022.04.14
댓글
© 2022 babydevelop