2012-01-13 9 views
2

PHPの基本的な設計に関する質問:私のウェブサイトのすべてのファイルにアクセスできる定数をいくつか定義したいと思います。 define()を使うと、将来のリリースで定数を変更した場合、各ファイルでそれを変更する必要があります。 1つのオプションは、ファイルに入れてから、すべてのソースファイルでそのファイルをrequire_onceすることですが、それはあまりにも過剰です。ファイル全体でグローバルになるように定数を定義できる場所はありますか?例えばPHP:複数のファイルからアクセスできる定数をどのように定義するのですか?

は( 'MAX_ELEMENTS'、5)を定義します。

将来的には、これを6に変更することができます。私は、ビジネスロジックのどこでもMAX_ELEMENTSを使用しています。

+0

これまで説明したとおり、すべての定数を1つのファイルに定義し、すべてのファイルでrequire_onceする必要があります。 – Virendra

+0

答えは1つのファイルに入れることだと思います。 auto_prepend_fileオプションを調べます。みんな、ありがとう! – tterbeg

答えて

0

ウェブサイトのすべての(またはほとんどの)スクリプトで使用される単一の正規のインクルードファイルを持つことは非常に一般的です。 PHPはこれを可能にするためにauto_prepend_fileを持っています。

1

実際に行う方法は、それを必要とするすべてのファイルで定数を定義するファイルrequire_once()であり、PHPアプリケーションのすべてのファイルまたはほぼすべてのファイルに含まれることは珍しくありません。

クラス階層で許可されている場合は、サブクラスによって継承されるクラス定数を基本クラスで定義できます。

0

定数はすべてのスコープで自動的に使用でき、定数defined by php itselfを除き、定義済みの定数はありません。幸いにも、PHPインタープリターは非常に小さくなる傾向があり、プロジェクトにconstants.phpというファイルを含めない理由は全くありません。必要なときはrequire_onceです。

0

定数のポイントは一度しか定義されません。したがって、あなたが言うように、ではなく、はすべてのファイルでそれを定義します。したがって、あなたの唯一の選択は実際には1つのファイルに定義することであり、require_onceはそのファイルが必要なあらゆる場所に定義することです。これは過度ではない、それは通常の操作方法です。

0

その他の回答に加えて、アプリケーションが複雑になる場合は、定数を使用して設定を保存することに移行することを検討してください。今のところうまくいくかもしれませんが、別のライブラリから同じ名前で定数を定義したいのですが、別の目的のためにそのライブラリのコードを追加したい場合はどうなりますか? Zend_Configのようなものは、今は残忍かもしれませんが、定数は非常に鈍い楽器なので、本当に特別な場合には使用を制限することになります。