soominkim Study
article thumbnail
Published 2023. 2. 28. 00:02
[PHP] PHP 상수 PHP
728x90

 

상수(constant)

상수란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미합니다. 하지만 상수가 변수와 다른 점은 한 번 선언되면 스크립트가 실행되는 동안 그 데이터를 변경하거나 해제(undefined)할 수 없다는 점입니다.

 

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

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

define() 함수는 첫 번째 인수로 상수의 이름을 전달받고 두 번째 인수로 그 값을 전달받습니다. 그리고 세 번째 인수는 상수의 이름이 대소문자를 구분하는가를 설정할 수 있습니다. 기본값은 false로 대소문자를 구분합니다. 다음은 예시입니다.

<?php

define("Hello","Hello, PHP");
echo Hello;

?>

위와 같은 경우는 대소문자를 구분합니다. echo Hello;가 아닌 echo hello; 실행 시 에러가 발생합니다

Fatal error: Uncaught Error: Undefined constant "hello" in C:\xampp\htdocs\myPHP\PHP Aplication1\text.php:5
Stack trace:
#0 {main}
  thrown in C:\xampp\htdocs\myPHP\PHP Aplication1\text.php on line 5

다음과 같이 사용할 수 있습니다. 하지만 위 두가지의 경우 새로운 사실이 하나 있습니다. 이 역시도 에러가 발생합니다.

<?php

define("HELLO","Hello, PHP",true);
echo hello;

?>
Warning: define(): Argument #3 ($case_insensitive) is ignored since declaration of case-insensitive constants is no longer supported in C:\xampp\htdocs\myPHP\PHP Aplication1\text.php on line 3

위의 define() 함수를 사용하고 싶다면 PHP 8.0 이하 버전이여야 합니다. PHP 8.0부터는 대소문자를 구분하지 않는 상수 정의가 제거되었습니다. PHP 버전이 8.0 이상이라면 세 번째 매개변수는 무시되며 치명적인 오류가 발생합니다. 

자세한 내용은 더보기를 참조하십시오.

 

define() 함수를 통해 선언된 상수는 스크립트 어디에서라도 참조할 수 있습니다. 그러나 해당 상수가 선언되기 전 이전의 스크립트 영역에서는 참조할 수 없습니다.

 

1. 마법 상수(magic constants)

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

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

<?php

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

?>

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

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

 

2. 타입 변환(type juggling)

PHP에서는 변수를 선언할 때 타입을 명시할 필요가 없습니다. PHP에서 변수의 타입은 해당 변수에 대입하는 값에 따라 자동으로 결정되기 때문입니다. 이렇게 상황에 따라 자동으로 변환되는 것을 type juggling 이라고 합니다.

따라서 PHP의 타입 강도(type strength)는 매우 약하며 타입이 동적으로 결정됩니다.

 

2-1. 강제 타입 변환(type casting)

PHP에서 강제 타입 변환을 사용하려면 타입 캐스트 연산자인 괄호를 사용하여 수행할 수 있습니다.

<?php

$var_01 = 10;
var_dump($var_01);            
$var_02 = (boolean) $var_01;
var_dump($var_02);  

?>

 

2-2. 가변 변수(variable variables)

PHP에서는 변수의 타입뿐만 아니라 변수의 이름까지 동적으로 바꿀 수 있습니다. 이러한 변수를 가변 변수라고 하며 해당 변수의 값을 또 다른 변수의 이름으로 취급합니다.

<?php 

$PHP = "HTML";
$HTML = "CSS";
$CSS = "JavaScript";
$JavaScript = "Ajax";
$Ajax = "PHP";  

 
echo $PHP;       // HTML
echo $$PHP;      // $HTML -> CSS
echo $$$PHP;     // $$HTML -> $CSS -> JavaScript
echo $$$$PHP;    // $$$HTML -> $$CSS -> $JavaScript -> Ajax
echo $$$$$PHP;   // $$$$HTML -> $$$CSS -> $$JavaScript -> $Ajax -> PHP

?>

 

 

[PHP] PHP 변수

변수(variable)는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간입니다. 즉 변수란 데이터를 저장할 수 있는 메모리 공간이며 저장된 값은 변경될 수 있습니다. PHP에서는

soominkim.tistory.com

 

728x90

'PHP' 카테고리의 다른 글

[PHP] 기타 제어문과 연관 배열  (0) 2023.03.02
[PHP] PHP 연산자 (2)  (0) 2023.02.28
[PHP] PHP 연산자 (1)  (0) 2023.02.28
[PHP] PHP 변수  (0) 2023.02.27
[PHP] PHP 개요  (0) 2023.02.27
profile

soominkim Study

@soominkim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그