PHP에서 상수는 스크립트 실행 중에 변경할 수없는 식별자이며 일반적으로 전 세계적으로 변경되지 않는 데이터를 저장하는 데 사용됩니다. 상수 정의는 일반적으로 정의 () 함수를 사용합니다. 상수가 런타임시 값이 존재하고 동적으로 액세스되는지 여부를 결정할 때 정의 된 두 함수 () 및 constant () 가 일반적으로 사용됩니다. 이 기사는이 두 기능을 사용하는 방법과이를 결합하여 상수를 유연하게 작동하는 방법을 심층적으로 소개합니다.
정의 (문자열 $ 이름) : bool
상수 이름이 $ 이름이 정의되었는지 여부를 결정합니다. 부울 가치를 반환합니다.
상수 (문자열 $ 이름) : 혼합
상수 $ 이름 의 값을 반환합니다. 상수가 정의되지 않으면 오류가 발생합니다.
이 두 기능은 특히 구성, 플러그인로드, 권한 점검 등과 같은 시나리오에서 동적 상수 이름을 처리하기위한 강력한 도구입니다.
정의 ()를 사용하여 상수를 정의하십시오.
define('APP_ENV', 'production');
그런 다음 APP_ENV 상수를 통해 값을 직접 참조 할 수 있습니다.
경우에 따라 상수가 구성 파일 또는 외부 시스템에서 발생할 수 있으므로 사용하기 전에 정의 된 지 확인할 수 있습니다.
if (defined('APP_ENV')) {
echo '현재 환경은입니다: ' . APP_ENV;
} else {
echo '정의되지 않은 환경 상수';
}
변수를 통해 상수 이름을 참조하려면 constant ()를 사용해야합니다.
$constName = 'APP_ENV';
if (defined($constName)) {
echo '현재 환경은입니다: ' . constant($constName);
}
이 방법은 종종 구성 요소 구성 또는 플러그인 메커니즘 (예 :)에서 사용됩니다.
$plugin = 'Uploader';
$constName = 'PLUGIN_' . strtoupper($plugin) . '_ENABLED';
if (defined($constName) && constant($constName) === true) {
echo "플러그인 {$plugin} 활성화";
}
정의 된 환경 상수에 따라 구성을 동적으로로드하는 다중 환경 구성 파일이 있다고 가정합니다.
define('APP_ENV', 'development');
$configName = 'CONFIG_' . strtoupper(APP_ENV) . '_DB';
define('CONFIG_DEVELOPMENT_DB', 'mysql://user:[email protected]/devdb');
define('CONFIG_PRODUCTION_DB', 'mysql://user:[email protected]/proddb');
if (defined($configName)) {
$dbConfig = constant($configName);
echo "데이터베이스 연결 정보:$dbConfig";
}
일련의 권한 상수를 정의한다고 가정합니다.
define('PERM_USER_EDIT', true);
define('PERM_USER_DELETE', false);
함수를 사용하여 정의 된 () 및 constant ()를 결합하여 권한을 결정할 수 있습니다.
function hasPermission(string $perm): bool {
$permConst = 'PERM_' . strtoupper($perm);
return defined($permConst) && constant($permConst) === true;
}
if (hasPermission('user_edit')) {
echo '사용자를 편집 할 수있는 권한이 있습니다';
}
constant () 로 전달 된 상수 이름은 문자열이어야합니다. 상수가 존재하지 않으면 경고가 발생됩니다.
정의 된 ()를 사용하면 정의되지 않은 상수로 인한 오류를 안전하게 방지 할 수 있습니다.
상수 이름은 CASE에 민감합니다 ( 정의 () 의 세 번째 매개 변수가 true 로 설정되지 않지만이 매개 변수는 PHP 7.3 이후에 더 이상 사용되지 않았습니다).
Defined () 및 constant () 는 동적 상수를 처리하기위한 강력한 도구입니다. 특히 동적 구성로드, 플러그인 시스템, 권한 제어 및 기타 시나리오에 적합합니다. 이 두 기능을 합리적으로 사용하면 PHP 프로그램이보다 유연하고 강력하며 모듈 식으로 만들 수 있습니다.