<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>デバッグ定数が定義されていない場合、デバッグロジックは入力されず、デフォルト設定が維持されます。
構成ファイルをロードするときは、 Difined()を介して必要な定数が存在するかどうかを確認して、欠落しているためプログラムの例外を防ぎます。
<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>マルチ環境の開発では、実行中の環境を区別するために異なる定数を定義でき、条件付きステートメントをdefined()と組み合わせることで異なるロジックを実行できます。
<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>条件付きステートメントにおける定義された()関数の役割は、主に繰り返しの定義を防止し、コードの堅牢性と柔軟な制御ロジックを強化することに反映されています。絶え間ない管理、デバッグ制御、または構成の検証に重要な役割を果たすことができます。定義された()を合理的に使用すると、複雑な環境でコードをより堅牢で維持しやすくなります。
<span></span>