マルチモジュールPHPシステムを開発する場合、定数の繰り返し定義の問題に遭遇することがよくあります。プロジェクトでは、複数のモジュールが同じ定数名を参照するか、同じ定義が複数の封じ込めファイルに存在する可能性があるため、 const定数の定義が重複してPHPエラーが発生するためです。このエラーを防ぐために、PHPビルトイン関数定義()を使用して定数が繰り返し定義されることを回避できます。
PHPでは、定義が定義されると再定義することはできません。プログラム内の複数のファイルまたはモジュールが同じ定数名を定義する場合、PHPは通常、次のように致命的なエラーを投げます。
Fatal error: Constant 'CONSTANT_NAME' already defined
この問題が処理されていない場合、システムがクラッシュしたり、適切に機能しない場合があります。
定義()は、定数が定義されているかどうかをチェックするPHPの組み込み関数です。それを使用して、定数が既に存在するかどうかを判断し、それが存在しない場合にそれを定義することができ、それにより繰り返し定義エラーを回避できます。
文法:
defined('CONSTANT_NAME')
定数constant_nameが定義されている場合、定義された()がtrueを返し、それ以外の場合はfalse 。
複数のモジュールで一定のSite_URLが使用されるマルチモジュールPHPシステムを開発しているとします。定数が定義されているかどうかを確認しない場合、重複する定義エラーが発生する場合があります。次の方法でこの問題を解決できます。
// 存在するconfig.phpで定数を定義します
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
上記の例では、最初に定義( 'Site_url')を使用して定義された定義が定義されているかどうかを確認します。定義がない場合は、 define()を呼び出して定義します。これにより、異なるモジュールの定数の繰り返し定義を効果的に回避できます。
PHPプロジェクト構造が比較的複雑な場合、定数を必要とするファイルが多い場合があります。このような判断ステートメントを各ファイルに追加することにより、定数が複数回定義されていないことを確認してください。たとえば、 Modulea.phpとmoduleb.phpの2つのモジュールがあるとします。どちらも定数Site_urlが必要になる場合があります。
modulea.php :
<?php
// 存在するModuleAで定数を使用します
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
// 定数を使用します
echo SITE_URL;
moduleb.php :
<?php
// 存在するModuleBで定数を使用します
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
// 定数を使用します
echo SITE_URL;
if(!defined( 'site_url'))を各モジュールファイルに確認することにより、定数を繰り返し定義する問題を回避します。
大規模なPHPシステムを開発する場合、通常、さまざまなファイルモジュールをロードするために含まれるか、必要です。この場合、ファイルが複数回ロードされている場合、定数を繰り返し定義することができます。この問題を解決するために、各ファイルに定数のチェックを追加して、定数が初めてロードされたときにのみ定義されていることを確認できます。
たとえば、システムのグローバル構成と定義を含むパブリック構成ファイルconfig.phpがあるとします。
// config.php
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
次に、他のモジュールがconfig.phpを導入します。
// ModuleA.php
include 'config.php';
// 定数を使用します
echo SITE_URL;
このようにして、 config.phpは複数回導入されますが、繰り返される定義エラーを回避することは、一定のSite_urlが一度だけ定義されます。
マルチモジュールPHPシステムを開発するとき、繰り返し定義によって引き起こされるエラーを防ぐために、定義された()関数を介して確認できます。定数を定義する前に、定数が定義されているかどうかを確認します。定義されていない場合、定数が一度だけ定義されることを保証します。この方法により、定数の繰り返し定義によって引き起こされるエラーは効果的に回避でき、システムは安定して堅牢です。