Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 상수 완벽 가이드: define() 함수부터 매직 상수까지

PHP 상수란 무엇인가?

상수(Constant)는 프로그램 실행 중 값이 변하지 않는 고정된 데이터를 의미합니다. 예를 들어 $x=10이나 $name="XYZ"와 같은 대입 표현식에서 10과 XYZ는 각각 변수에 할당되는 숫자형 상수와 문자열 상수입니다.

PHP에서는 define() 함수를 사용하여 사용자가 직접 정의한 식별자(이름)로 상수를 만들 수 있습니다. 한 번 정의된 상수는 스크립트 전체에서 변경 없이 사용할 수 있어 설정값이나 고정 데이터를 관리할 때 유용합니다.

define() 함수 문법

define ( string $name , mixed $value [, bool $case_insensitive = FALSE ] ) : bool

매개변수 설명

번호매개변수 및 설명
1name
상수의 이름입니다. 일반적으로 대소문자를 구분하는 식별자로 지정합니다.
2value
상수에 저장될 값입니다. 스칼라 값(정수, 실수, 문자열 등) 또는 배열을 사용할 수 있습니다.
3case_insensitive
기본적으로 상수 식별자는 대소문자를 구분합니다. 이 매개변수를 true로 설정하면 name과 NAME을 동일하게 취급합니다. 단, PHP 7.3부터 이 기능은 권장되지 않으며(deprecated), PHP 8.0에서 완전히 제거되었습니다.

반환값

상수 정의가 성공하면 TRUE를 반환하고, 실패하면 FALSE를 반환합니다.

define() 함수 사용 예제

다음 예제는 define() 함수를 사용하여 다양한 타입의 상수를 정의하는 방법을 보여줍니다.

<?php
define("maxmarks",300);
define("pi", 3.142);
define("subjects",["phy", "che", "maths"]);
?>

위 코드에서 maxmarks는 정수형, pi는 실수형, subjects는 배열형 상수로 정의되었습니다. PHP 5.6 이상부터는 배열도 상수 값으로 사용할 수 있습니다.

PHP 매직 상수(Magic Constants)

PHP에는 미리 정의된 상수가 많이 있지만, 대부분은 해당 확장 모듈이 설치되어 있어야만 사용할 수 있습니다. 그러나 아래의 상수들은 별도의 확장 설치 없이 항상 사용 가능하며, 이들을 매직 상수라고 부릅니다.

이름설명
__LINE__현재 파일에서의 줄 번호입니다.
__FILE__파일의 전체 경로와 파일명입니다.
__DIR__파일이 위치한 디렉터리 경로입니다.
__FUNCTION__함수 이름입니다. 익명 함수(클로저)인 경우 {closure}를 반환합니다.
__CLASS__클래스 이름입니다. 클래스가 선언된 네임스페이스를 포함합니다(예: Foo\Bar). PHP 5.4부터는 trait 내에서도 사용할 수 있으며, trait 메서드 안에서 사용하면 해당 trait을 사용하는 클래스의 이름을 반환합니다.
__TRAIT__trait 이름입니다. 선언된 네임스페이스를 포함합니다(예: Foo\Bar).
__METHOD__클래스 메서드 이름입니다.
__NAMESPACE__현재 네임스페이스의 이름입니다.

매직 상수 사용 예제

다음 예제는 주요 매직 상수들의 실제 사용 방법과 출력 결과를 보여줍니다.

<?php
echo "Line no: " . __LINE__ . "\n";
echo "file name : " . __FILE__ . "\n";
echo "directory name: " . __DIR__ . "\n";
function myfunction(){
    echo "function name: " . __FUNCTION__ . "\n";
}
class myclass{
    public function __construct() {
        echo __CLASS__ . "\n";
    }
    public function mymethod(){
        echo __METHOD__;
    }
}
$obj=new myclass();
$obj->mymethod();
?>

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Line no: 2
file name : C:\xampp\php\testscript.php
directory name: C:\xampp\php
myclass
myclass::mymethod

마무리

PHP 상수는 한 번 정의하면 값을 변경할 수 없기 때문에 애플리케이션의 환경 설정, 최대값 제한, 경로 지정 등에 널리 활용됩니다. define() 함수 외에도 PHP 5.3부터는 const 키워드를 사용해 상수를 정의할 수 있으며, 클래스 내부에서도 const 키워드로 클래스 상수를 만들 수 있습니다. 매직 상수를 적절히 활용하면 디버깅과 로깅 작업을 더욱 편리하게 처리할 수 있습니다.