今私は、プロジェクトで一定量の文字列と列挙型を大量に使用しています。私は「定数」クラスが含まれているので、PHPで定数を保持する方法
class Constants implements iStatuses, iEmailTypes {
}
interface iStatuses {
const STATUS_NEW = 1;
cosnt STATUS_UPDATED =2;
...
}
interface iEmailTypes {
const EMAIL_TYPE_NEW = 1;
const EMAIL_TYPE_UPDATED =2;
...
}
このアプローチは、私は、コード内の任意の場所に次のように私の定数を取得することができ:それの初め以来、私は(擬似PHPのコード例)以下のアプローチを使用していましたindex.php。
$this->sendEmailByType(CONSTANTS::EMAIL_TYPE_NEW);
しかし、私は完全なアプローチのマイナス面を見ることができます:
- 定数クラスは、列挙型と定数の多くとオーバーロードされ、右の定数を取得することは非常に困難です。命名規則は、それを解決するのに役立ちますが、それは私が
- 定数クラスが大きすぎると、私はされて、すべてのインターフェイスの追跡を維持する必要が
- 厄介である必要がある一定のものを識別するために、追加的な思考を必要とするので、私は、これが好きではありませんCosntantsクラスで実装されています。
私のプロジェクトはますます大きくなり、別のプロジェクトのコードとマージする必要があるため、クラスの定数アプローチを変更する必要があります。しかし、私はそのクラスに基づいてあまりにも多くの依存関係を持っています。定数クラスの値を使用する古いコードを壊さないために、どのように再構築するべきですか?
あなたの考えや提案、私の「定数」アプローチを改善する方法、またはそれがうまくいくことを確認して、それをサポートしてください。
ありがとうございます。
あなたの構造の残りの部分を知らなくても答えにくいですが、その領域を扱う関連するコントローラ(またはエンティティ)クラスの先頭に定数を配置します。 – DevDonkey
多くのコントローラで共有定数を使用したい場合はどうすればよいですか? –
すべての定数を 'Constants'クラスの下に置くことは厳しい要求ですか?私は各クラスに関連する定数が代わりにそのクラスを介してアクセス可能であることを期待しています(組み込みのPHP定数がどのように存在するか)。 – apokryfos