私は簡単にスイッチを反転できるようにする必要があるphpファイルを持っています。スイッチは、ローカルサーバーの場合は1に設定され、運用サーバーの場合は0に設定されます。 local_on = '1';またはlocal_on = '0';どちらの方法が良いですか?いずれかの方法が良い方法は、どちらの方法がベストプラクティスですか?グローバル対定義
グローバル対定義
答えて
define
。後でその値を変更することはできず、その値は常にすべてのスコープで利用できます。
特有の名前(すべて大文字のdefine
)を選択して、現代的な方法でグローバル変数にアクセスするには、$GLOBALS
スーパーグローバル(sic)を使用してください。また、グローバル変数はの変数であるため、理論上は偶然に値を変更することができます。
事故によるスイッチの設定や設定解除の展開を簡素化していないために、私はあなたが「なぜまた
// Turn on debugging code on local machine
define('MYPAGE_LOCAL_ON', $_SERVER['SERVER_NAME'] == 'my-dev-box');
のように、私は見ていない、$_SERVER
の性質を調べることによって、それを自動的に設定し、自動的にお勧めしますdスイッチを文字列または整数に設定します。 boolean valuestrue
とfalse
の方が適切です。
woa ..素晴らしい...いくつかの次のレベルの改善...ありがとう! –
グローバル変数は、その名前が示すように、変数です。つまり、値はコードのどの部分でも変更できます。あなたの場合はおそらくあなたが望むものではありません。一方
、一定の(あなたがdefine
で設定だろうと)は...よく... 定数です。一度設定すると変更することはできません。あなたの場合はおそらくあなたが望むものです。
変数と定数の考えを考えてみましょう。この種のスイッチでは、一般にdefine()
と定数を使用します。
シンボルと定数の定義は本当に異なるものです。 – grantwparks
グローバル変数は、あなたがすでによく知っていると思う理由のために悪いニュースであり、コード内のすべての関数とメソッドでglobal $var
を宣言することを忘れないでください。 。定義された定数はどこでも自動的に利用可能です。さらに、スクリプトの実行中に、ある変数から別の変数に誤って変数を設定する可能性があります。これが起こった場合、これは本当に見つけにくいバグを引き起こす可能性があります。
"というコードですべての関数とメソッドで' global $ var'を宣言しなければならないので、 "//いいえ、そうではありません。 –
define
が好ましい。理由は:、PHP 5.3以降にconst
を使用することができます。
- あなたは
PS
define
だけでなく、それは私のために読みやすいです簡潔に言えば、define
はあなたが探しているものです(for said reasons)。
しかし、将来の開発に向けて、実行中のコンテキストを提供するアプリケーション全体の依存性のようなものを探すかもしれません。これは定数ではできませんので、define
だけでなく、グローバル変数はどちらも間違っています。
シンボルを定義するよりも少し良く実行し、名前の衝突を最小限に抑えることがもう一つの方法は、私はより速く入力する3人が、私の前にそのようにしたとき、 `define`を答えることがちょうど約た
abstract config {
const LOCAL = true; // toggle to false
// or maybe
const SERVER = 'local'; // toggle to 'remote'
// (maybe having if (config.SERVER == 'remote') would be more readable in some
// cases than if (!config.LOCAL) depends on your app)
}
私は物事 '(DEBUG_MODE)'が十分に読むことができる場合 – RiaD
!部分は文脈によって味の問題です。定義の代わりにクラスconstを使用することは、コードと効率の理由から、より優れています。 – grantwparks
const valueename = 'smth'もクラス5.3から利用できます。私は効率の理由がここで作動していないと思う。とにかく、私はクラスが1つ以上の定数がある場合、コードがより正確になることに同意します – RiaD
- 1. windows対ubuntu NameError:グローバル名は定義されていません
- 2. Erlang未定義関数グローバル
- 3. Pythonグローバル変数定義トラブルシューティング
- 4. apc_define_constants対hidef対定義
- 5. javascript定数をグローバルに定義する
- 6. 再定義競合する複数のプリプロセッサ定義グローバル
- 7. グローバルに定義されています。position:ページコンテナに相対的です。
- 8. グローバル構造体を定義するグローバル構造体
- 9. 未定義のjavascriptグローバル変数
- 10. Alamofire + SwiftyJSONでグローバル変数を定義
- 11. グローバルvsユーザー定義関数内のローカル
- 12. vb.netのグローバル条件定義(#const)ステートメント
- 13. バッチビジュアルスタジオビルドのグローバル定義を追加する
- 14. Javascriptをグローバル変数 - コンソールログ未定義
- 15. LLVMでグローバル定義をキャストIR
- 16. オンザフライコンパイルでTraceurでグローバル値を定義
- 17. アクセス定義済みグローバル変数webpack
- 18. OpenGL対DirectX、ローカル対グローバル?
- 19. プロキシ対応の定義
- 20. NameErrorは:グローバル名が別の.pyファイルで定義されたグローバル変数で定義されていない
- 21. グローバル要素定義をローカル要素定義で上書きできますか?
- 22. ユーザー定義の文字列リテラル対。他のユーザー定義リテラル
- 23. Qlikview - サーバーを定義するグローバル変数を設定します
- 24. 私は私のbuild.xmlのantスクリプトでグローバルsvnSetting定義したいグローバル
- 25. Javascript Local対グローバル変数
- 26. LUAオプション(モジュール対グローバル変数)
- 27. ネイティブローカライゼーションに対応:グローバル変数
- 28. 連合はタイプガード対未定義
- 29. ngのリピート対象未定義
- 30. アプリケーションのすべてのスレッドに対して1つのグローバルUncaughtExceptionHandlerを定義します。
のようなクラスの宣言です。彼らが言ったことをする。 – cspray
'1'/'0'の代わりにtrue/falseを使用する意味があります – RiaD
関連:http://stackoverflow.com/questions/1412557/identify-development-vs-production-server-in-php – karim79