PHP開発では、データベースの構成、APIパス、システムステータスコードなどのグローバルに利用可能な定数を定義する必要があることがよくあります。定義は、これらの定数を定義する際に最も一般的に使用される方法の1つです。ただし、多くの開発者は、特に関数内でそれらを呼び出す場合、 define()を使用して配列定数を定義しようとする場合にいくつかの問題を抱えています。この記事では、define()を使用して配列定数を定義する方法と、これらの定数が関数で正しくアクセスして使用する方法について詳しく説明します。
PHP 7以降、定義()は、配列定数の定義を正式にサポートしています。この前に、スカラー定数はconstを通じてのみ定義できますので、これは配列構成を定義する必要がある多くのシナリオに便利さを提供します。
例:
<code> define( 'config'、['host' => 'gitbox.net'、 'port' => 3306、 'user' => 'root'、 'password' => 'secret']); </code>この例では、データベース接続に関する基本情報を含むConfigと呼ばれる配列定数を定義します。
定数がdefine()を使用して定義されると、グローバルに、および関数内でアクセスできます。これらの定数を導入するためにグローバルなキーワードを使用したり、キーワードを使用したりする必要がないことに注意する必要があります。また、定数を介して直接アクセスできます。
例:
<code> function connectdatabase(){$ host = config ['host']; $ port = config ['port']; $ user = config ['user']; $ password = config ['password']; echo "データベースに接続します:$host:$port,ユーザー:$user";
}
</code>
関数ConnectDatabaseでは、構成定数の配列要素を直接使用します。この執筆方法は完全に合法であり、PHP 7以上で推奨されています。
PHPバージョンの制限<br> PHPバージョンが7.0以上であることを確認してください。 PHPの下位バージョンの定義()は、配列の定義をサポートしていません。これを行こうとすると、エラーが発生します。
一定の名前の習慣<br> コードの読みやすさを改善するために、一定の名前はすべての大文字と別々の単語を使用して、 API_ENDPOINTS 、 DB_CONFIGなどのアンダースコアを使用することをお勧めします。
アレイ不変性<br> define()を使用して定義された配列定数は、実行時に変更できません。 config ['host']を変更しようとすると、エラーが発生します。
<code> config ['host'] = 'newhost.com'; //?許可されていない</code>実行時にデータを動的に構成する必要がある場合は、変数またはクラス属性および非条件を使用します。
関数callapi($ type){
if(!sisset(api_endpoints [$ type])){
echo "不明なAPIタイプ:$ type";
戻る;
}
$url = API_ENDPOINTS[$type];
echo "インターフェイスアドレスをリクエストします:$url";
}
</code>
この例では、複数のAPIの要求アドレスを定義し、関数callapiを介してタイプに従って呼び出されるURLを選択します。明確な構造があり、メンテナンスが簡単です。
define()を介して配列定数を定義することは、PHP 7によって提供される強力な機能であり、構成管理と定数の集中ストレージにおいて非常に実用的です。これらの定数は、追加の宣言なしに関数内で直接使用することもできます。 PHPバージョンと配列の不変性に注意してください。この機能を利用して、よりエレガントで保守可能なPHPプログラムを作成できます。