PHP에서 상수는 정의 () 함수에 의해 정의되며, 일단 정의되면 해당 값이 변경 될 수 없습니다. 상수는 종종 구성 옵션, 시스템 경로 또는 기타 공통 상수와 같은 프로그램에 고정 된 불변의 값을 저장하는 데 사용됩니다. 그러나 때로는 동일한 상수가 여러 번 정의되는 상황을 만날 수 있으며, 이는 충돌이나 오류로 쉽게 이어질 수 있습니다. 이 문제를 피하기 위해 PHP는 정의 된 () 함수를 제공하여 상수가 정의되었는지 확인합니다.
php에서 정의 () 함수를 사용하여 상수를 정의하고 구문 형식은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'CONSTANT_NAME'</span></span><span>, </span><span><span class="hljs-string">'value'</span></span><span>);
</span></span>
constant_name 은 상수의 이름입니다.
'가치' 는 상수의 가치입니다.
예를 들어:
<span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'SITE_NAME'</span></span><span>, </span><span><span class="hljs-string">'My Website'</span></span><span>);
</span></span>
이것은 '내 웹 사이트' 의 값을 가진 Site_name 이라는 상수를 정의합니다. 후속 코드에서 Define ( 'site_name', '다른 웹 사이트')을 다시 호출하면 상수가 정의되었음을 촉구하여 오류가 나타납니다.
상수가 반복적으로 정의되는 것을 피하기 위해 PHP는 상수가 정의되었는지 여부를 확인하는 정의 된 () 함수를 제공합니다. 정의 된 () 함수는 상수 이름을 매개 변수로 받아들이고 상수가 정의 된 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.
구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'CONSTANT_NAME'</span></span><span>)
</span></span>
이런 식으로, 동일한 상수가 반복적으로 정의되지 않도록 상수를 정의하기 전에 판단 할 수 있습니다. 예를 들어:
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'SITE_NAME'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'SITE_NAME'</span></span><span>, </span><span><span class="hljs-string">'My Website'</span></span><span>);
}
</span></span>
이 예에서는 먼저 site_name이 정의되었는지 확인합니다. 정의되지 않은 경우 정의 ()가 정의하도록 호출됩니다. 정의 된 경우 정의 () 함수는 충돌을 피하기 위해 다시 실행되지 않습니다.
PHP 프로젝트가 커지면 상수가 종종 여러 파일에 사용됩니다. 다른 파일에서 동일한 상수가 반복적으로 정의되는 것을 방지하기 위해 정의 된 () 함수를 사용하여 각 파일을 확인할 수 있습니다.
예를 들어, config.php 에서 상수를 정의한다고 가정합니다.
<span><span><span class="hljs-comment">// config.php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'SITE_URL'</span></span><span>, </span><span><span class="hljs-string">'https://www.example.com'</span></span><span>);
</span></span>
그런 다음 다른 파일 Header.php 에서는이 상수를 사용해야 할 수도 있습니다.
<span><span><span class="hljs-comment">// header.php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'SITE_URL'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'SITE_URL'</span></span><span>, </span><span><span class="hljs-string">'https://www.example.com'</span></span><span>);
}
</span></span>
이런 식으로 Header.php가 여러 번 참조 되더라도 Site_url은 반복적으로 정의되지 않으므로 충돌을 피합니다.
일부 더 큰 응용 프로그램에는 일반적으로 다른 구성과 상수가 포함 된 여러 파일이 있습니다. 상수가 여러 장소에서 정의되면 정의 ()를 사용하여 중복 정의를 방지 할 수 있습니다. 예를 들어, 프레임 워크 또는 라이브러리 구성 파일에서 다음 코드를 사용할 수 있습니다.
<span><span><span class="hljs-comment">// config.php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DB_HOST'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'DB_HOST'</span></span><span>, </span><span><span class="hljs-string">'localhost'</span></span><span>);
}
</span></span>
동일한 프로젝트에 여러 개의 유사한 상수가있을 수있는 경우, 이름 충돌을 피하기 위해 네임 스페이스를 사용하는 것이 좋습니다. 예를 들어:
<span><span><span class="hljs-comment">// database.php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DB_CONFIG_HOST'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'DB_CONFIG_HOST'</span></span><span>, </span><span><span class="hljs-string">'localhost'</span></span><span>);
}
</span><span><span class="hljs-comment">// user.php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'USER_DB_HOST'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'USER_DB_HOST'</span></span><span>, </span><span><span class="hljs-string">'localhost'</span></span><span>);
}
</span></span>
다른 상수 이름을 사용하여 명명 충돌을 효과적으로 피할 수 있습니다.
정의 된 () 함수는 상수가 반복적으로 정의되는 것을 방지하기 위해 PHP의 함수를 제공합니다. 정의 ()를 사용하여 상수를 정의 할 때, 먼저 정의 된 ()를 사용하여 상수가 이미 존재하는지 확인하고, 이는 상수가 반복적으로 정의되는 것을 효과적으로 피할 수있어 충돌과 잠재적 오류를 줄일 수 있습니다. 특히 대규모 프로젝트 에서이 접근 방식은 코드의 견고성과 유지 가능성을 보장합니다.
정의 된 () 및 defined () Sensible을 사용하면 프로젝트에서 상수를 더 잘 관리하여 중복 정의로 인해 문제를 일으키지 않도록 할 수 있습니다.