<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// コードのこの部分は、記事の内容とは何の関係もありません,分離効果を示すためにのみ使用されます</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 記事が始まります</span></span><span>
<span class="hljs-comment">/**
* PHP それを使用する方法 defined() 関数は、グローバルな一定の競合の問題を回避します?
*
* 存在する PHP 開発中,定数の定義は一般のな操作です,尤其はい存在する配置文件或全局设置中经常会用到全局常量。
* しかし,プロジェクトのサイズが大きくなるか、サードパーティライブラリが導入されたとき,一定の名前の競合が起こりやすい,プログラムの例外またはロジックエラーを引き起こします。
* この記事では、使用方法について説明します PHP の defined() 定数が定義されているかどうかを検出する機能,从而避免全局常量の冲突。
*
* 1. 何ですか defined() 関数?
* defined() はい PHP の内置関数,用于检测某个常量はい否已经定义。
* 関数原型:
* bool defined ( string $name )
* 定数の場合 $name 定義されています,戻る true;否则戻る false。
*
* 2. グローバルな一定の競合を避ける必要がある理由?
* PHP 中定义の常量はい全局可见の,一定の名前が繰り返し定義されると,警告または上書きを引き起こします,影响程序の稳定性。
* たとえば、複数のファイルが次のように定義されています VERSION の常量,読み込むと競合があります。
*
* 3. 使用 defined() 来避免冲突の基本方法
* 存在する定义常量之前,最初に使用します defined() 检测该常量はい否已存存在する,定義は、定義されていない場合にのみ実行されます。
*
* サンプルコード:
*/</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">'MY_CONSTANT'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'MY_CONSTANT'</span></span><span>, </span><span><span class="hljs-string">'这はい一个常量の值'</span></span><span>);
}
<span class="hljs-comment">/**
* このように、定義が数回含まれているか参照されていても MY_CONSTANT の代码,定数は繰り返し定義されません。
*
* 4. 競合をさらに回避するために、名前空間またはプレフィックスを組み合わせます
* なぜなら PHP 定数は名前空間をサポートしません,プロジェクトまたはモジュールで定数名をプレフィックスすることをお勧めします,独自性を向上させます。
*
* 例えば:
*/</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">'APP_CONFIG_VERSION'</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">define</span></span><span>(</span><span><span class="hljs-string">'APP_CONFIG_VERSION'</span></span><span>, </span><span><span class="hljs-string">'1.0.0'</span></span><span>);
}
<span class="hljs-comment">/**
* 5. 存在する配置文件中规范使用 defined()
* 構成ファイルまたはパブリックファイルで均一に使用されます defined() 判断,包含の重複のためにエラーが報告されていないことを確認してください。
*
* 6. その他の提案
* - 避免使用过于简单和通用の常量名,のように STATUS、VERSION 待って。
* - 尽量存在する常量命名前加上项目名、モジュール名の略語,のように MYAPP_、MOD_ 待って。
* - 使用 class 定数または構成クラスは、多数のグローバル定数を置き換えます,コード構造と保守性を向上させます。
*
* 結論:
* 利用 defined() 関数检测常量はい否已定义,はい避免 PHP 全局常量冲突の有效手段。
* 结合合理の命名规范,紛争のリスクを大幅に減らすことができます,提升代码の健壮性和可维护性。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>