<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 이 기사와 PHP 관련이없는 코드,분리 전 예제 만 있습니다。</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello World!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># 존재하다 PHP 조건부 진술에서,defined() 기능의 실제 적용 방법은 무엇입니까??</span></span><span>
존재하다 PHP 개발 중,`</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 함수의 주요 기능은 상수가 정의되었는지 여부를 감지하는 것입니다.。반환 값은 부울 유형입니다:若常量已存존재하다则返回 `</span><span><span class="hljs-literal">true</span></span><span>`,그렇지 않으면 반환 `</span><span><span class="hljs-literal">false</span></span><span>`。이 특성으로 인해,존재하다조건부 진술에서使用 `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()` 개발자가 코드 로직을보다 유연하게 제어하도록 도울 수 있습니다,避免重复定义常量或존재하다未定义时使用常量导致실수。다음은 응용 프로그램 방법을 설명하기위한 몇 가지 일반적인 시나리오의 조합입니다.。
</span><span><span class="hljs-comment">## 1. 상수가 반복적으로 정의되는 것을 방지합니다</span></span><span>
존재하다大型项目中,다른 파일은 동일한 상수를 정의 할 수 있습니다。통과하다 `</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>()`,可以존재하다定义之前先检测常量是否已经存존재하다,나타나지 마십시오 PHP ~의“상수가 정의됩니다”실수。
```php
</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">'APP_ENV'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'APP_ENV'</span></span><span>, </span><span><span class="hljs-string">'production'</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">'DEBUG'</span></span><span>) && DEBUG === </span><span><span class="hljs-literal">true</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(</span><span><span class="hljs-number">0</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">'DB_HOST'</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'DB_USER'</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'불완전한 데이터베이스 구성,구성 파일을 확인하십시오。'</span></span><span>);
}
</span></span>이러한 유형의 탐지는 배포 및 온라인을 배포 할 때 특히 중요합니다.
때때로 우리는 파일 상단에 ID 상수를 정의한 다음 다른 파일 에이 상수가 존재하는지 여부를 감지하여 중복로드를 피합니다.
<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">'INIT_LOADED'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'INIT_LOADED'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// 초기화 코드,예를 들어, 구성을로드합니다、시간대 등 설정 등</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">'ENV_DEV'</span></span><span>)) {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ENV_TEST'</span></span><span>)) {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'test-db-server'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$db_host</span></span><span> = </span><span><span class="hljs-string">'prod-db-server'</span></span><span>;
}
</span></span>조건부 명세서에서 정의 된 () 함수의 역할은 주로 반복 된 정의를 방지, 코드 견고성 및 유연한 제어 로직을 향상시키는 데 반영됩니다. 지속적인 관리, 디버깅 제어 또는 구성 검증에서 중요한 역할을 할 수 있습니다. Defined () 의 합리적인 사용은 복잡한 환경에서 코드를보다 강력하고 쉽게 유지할 수 있습니다.
<span></span>