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. Python MySQLdbでユーザー定義変数を設定できますか?
- 4. PHPの変数から特定の定義を削除する
- 5. セッション変数を特定の可変インデックスで設定解除することはできますか?
- 6. emacs lispで関数を定義解除する方法はありますか?
- 7. インタフェースで定義された定数を変更する
- 8. MS-DOS変数の定義を解除する方法は?
- 9. javascriptメソッドの定義を解除することはできますか?
- 10. validationorルーティングでparameters.iniで定義された変数を使用できますか?
- 11. 定数値はアプリケーションコントローラ内で変更できますか?
- 12. PHP:クラス外またはコンストラクタ内の定数を定義しますか?
- 13. PHPで未定義のインデックスと変数
- 14. PHPが要素ごとにセッション変数を設定解除しました
- 15. phpの関数の定数変数でパラメータを定義する方法は?
- 16. MATLABで未定義の関数または変数
- 17. VScodeはグローバル変数を定義できません
- 18. Playbook-global変数をAnsibleで定義することはできますか?
- 19. PHPでPHP_ZTSの定義済み定数とは何ですか?
- 20. $ rootScope変数は未定義ですか?
- 21. アセンブリから定義された変数にCからアクセスできますか?
- 22. はVBAで関数エイリアスを定義できますか?
- 23. php関数はどこで定義されていますか?
- 24. 複数の変数をMATLABで同時に定義できますか?
- 25. cssで定数を定義することはできますか?
- 26. PHP/Zendのは、未定義の変数
- 27. $ _POST変数を循環させてPHPで未定義に変更する
- 28. PHPエラー - 定数DB_HOSTはすでに定義されていますか?
- 29. PHPで配列である_SESSION変数の設定を解除する方法
- 30. REPLでは固定性宣言を定義できますか?
つまり、定数を変数にしたいですか?これについてもう少し考えてみたいかもしれません。 –
@MarcBしかしOPのユーザー名が与えられれば適切です。 – abligh
@MarcB OPは明らかに質問の皮肉を認めていました(この質問を投稿するだけのアカウントを作った)が、真剣にそれを提起しています。 PHPの作成者が「定数」と呼ぶことを決めたものの1つを定義解除できますか?_ –