PHPで定数を定義解除または変更できますか?PHPで定数を定義解除または変更できますか?
答えて
定数は、constantです。
参考:一度定数が定義されているphp.net/manual/language.constants.php
それでPHPはこれを達成するためにグローバル変数の使用を奨励しますか? – TheConstantGardener
@TheConstantGardener:必ずしもそうではありません。良い設計にはグローバル変数が必要な場合はほとんどありません。 –
なぜWordpressは851回の66ファイルでグローバルキーワードを使用しますか? – TheConstantGardener
号、それは変わっていないか、未定義とすることはできません。
これは間違っています。ランキング拡張(別の答えで言及されているように)は、PHP 4以降でそれを可能にしました。最近、uopz拡張もPHP 5.4からの拡張を可能にします。 –
これは絶対に実行する必要がある場合(私は他人が述べているように推奨しませんが)、あなたは常にRunkitを使用できます。
http://www.php.net/manual/en/function.runkit-constant-redefine.php
http://www.php.net/manual/en/function.runkit-constant-remove.php
このようなナンセンスは、そこにひどいPHPコードがある理由の1つです。このような方法で言語構造を破壊することはひどい考えであり、それを行う開発者にはあまり反映されません。 –
Runkitは、任意のWebホストにインストールされたことがない、オプションのPHP拡張モジュールです。 – gnud
@George Cummins私はそこに同意します!それでも、OPは彼らが何をしているのか、何故定数を設定解除/再定義したがっているのか、何か非常に実験的な言語ハッキングのもののためにRunkitのようなものがあるかもしれないので、私はそれを投稿すると思った。 –
他のポスターは正しいです - あなたはこれを行うことはできません。しかし、おそらくあなたは、あなたの定義を、定数の最良の値が何であるかを知るところに移動することができます。
define('STRING1','Foo');
define('STRING2', 'Bar');
define('STRING3', 'Baz');
、あなたが条件を発見したら、STRING2の値を変更したい:
はおそらく、あなたは大きなリストに定数を定義しています。 1つの方法は、正しい設定がわかるまで定義を延期することです。
define('STRING1','Foo');
// define('STRING2', 'Bar'); -- wait until initialization
define('STRING3', 'Baz');
...
if (condition) {
define('STRING2', 'Bar type 2');
} else {
define('STRING2', 'Bar type 1');
}
論理設定STRING2は、処理中に後で別のファイルに格納することもできます。
私はこれがゲームに遅れている...しかし、ここにいくつかの人々を助けるかもしれない一つのことは知っている...私はすべての私の定数を定義し、中に含まれ、私の「Application.php」ファイル(で
すべての私のスクリプト)私はこのような何かを:有効ので、通常
if(!defined("LOGGER_ENABLED")){
define("LOGGER_ENABLED", true);
}
は、すべてのスクリプトは、ログを取得するために起こっている...しかし、ある特定のスクリプトで、私はこの振る舞いをしたくない場合は、私は単純に前にこれを行うことができます私は私のApplication.phpを含んでいます:
define("LOGGER_ENABLED", false);
あなたのアプリケーション全体を見ることなく、これは不公平な仮定かもしれませんが、あなた自身のシステムを「上書き」するのはちょっとハッキリです。より具体的または論理的なものに基づいてLoggerを有効にするかどうかを管理しやすくするために、アプリケーション/フレームワークを再設計できませんか?それは、使用や管理が非常に面倒なように聞こえますが、上には聞こえないものがまれにしか使用されません。これは潜在的に有益な情報を潜在的に追加する正当な答えです。しかし、潜在的に悪い習慣を促進します。 – James
@パトリック、はい、誰かが既に設定されている値を変更したいのであれば、それについてはNils Luxtonの答えが最適です。あなたは私を覚えていますか? –
これは動作する解決策を提供するので、これを受け入れる必要があります。例えば、通常の練習でもあります。 Cコードなので、PHPで使用するには問題はありません – Sinisa
他の箇所で言及していないので、uopz拡張モジュールでは、PHP 5.4以降でuopz_undefine()を使用して定数を削除できます。
投票者:私が書いたものが間違っている場合は、正しく言ってください。 –
- 1. PHP定義の定義を解除しますか?
- 2. PHPのクラスメソッドからクラス変数を定義できますか?
- 3. PHPセッション変数を1か所に定義できますか?
- 4. Python MySQLdbでユーザー定義変数を設定できますか?
- 5. PHPの変数から特定の定義を削除する
- 6. スカラ関数変数:デフォルト値を使用する(関数定義または変数定義で定義する)
- 7. 約定のための解決関数を定義できますか?
- 8. 変数を定義できません
- 9. Googleスプレッドシートの式でローカル値(または変数)を定義できますか?
- 10. javaでパブリック変数を定義する方法は変更できません
- 11. セッション変数を特定の可変インデックスで設定解除することはできますか?
- 12. emacs lispで関数を定義解除する方法はありますか?
- 13. ユーザは自動マクロ変数を定義できますか?
- 14. Matlab:関数定義でワークスペース変数にアクセスできますか?
- 15. javascriptメソッドの定義を解除することはできますか?
- 16. インタフェースで定義された定数を変更する
- 17. MS-DOS変数の定義を解除する方法は?
- 18. 既存の列挙型の定義を解除または置き換えることはできますか?
- 19. validationorルーティングでparameters.iniで定義された変数を使用できますか?
- 20. 定数値はアプリケーションコントローラ内で変更できますか?
- 21. PHP:クラス外またはコンストラクタ内の定数を定義しますか?
- 22. クロージャ内の変数定義をオーバーライドできますか?
- 23. 式の値を変数として定義できますか?
- 24. PHPフォームのインデックスが未定義で変数が未定義
- 25. PHPで未定義の変数名エラー
- 26. PHPで未定義のインデックスと変数
- 27. Cloud Foundryユーザ定義のenv変数をbuildpackから設定できますか?
- 28. IntRectを定義したら、どうすれば変更できますか?
- 29. PHPが要素ごとにセッション変数を設定解除しました
- 30. 後で変更できないコンストラクタの値を設定または定義します(実行時)
つまり、定数を変数にしたいですか?これについてもう少し考えてみたいかもしれません。 –
@MarcBしかしOPのユーザー名が与えられれば適切です。 – abligh
@MarcB OPは明らかに質問の皮肉を認めていました(この質問を投稿するだけのアカウントを作った)が、真剣にそれを提起しています。 PHPの作成者が「定数」と呼ぶことを決めたものの1つを定義解除できますか?_ –