2017-10-26 22 views
0

私はこの特定のケースで良い例を見つけることができませんでした。この質問をするほとんどの人は、より複雑なユースケースを持っているので、通常、答えは複雑な解決策を伴います。スクリプトの冒頭には、いくつかの関数を含むすべてのコードで使用可能な変数がいくつかあります。さもなければ、私は各機能でそれを設定しなければならないでしょう、そして、これはユーザ設定値であると考えて、コード全体でそれを変更することはただ不可能です。関数内のPHP変数

<?php 
//**** Example User Config Area **** 
$name = "blah"; 
$tag = "blah"; 
//********************************** 

function taco() { 
    echo $name; //this function needs to use these user set variables 
    echo $tag; 
} 
?> 

誰もがグローバル変数を使用しないと言います。これはグローバル変数が実際に意味をなさないケースですか?もしそうでなければ、私はこの仕事をするためにここで何をすべきですか?

これらの値はプログラムで変更されないことに注意してください。ユーザーが編集した場合のみ変更されます。などDBの場所またはユーザ名と同様

+0

よく、変数、グローバル変数、またはセッション内のpublic変数として宣言することが多くあります。 クラス内の変数を定義すると、良いオプションと安全であるはずです –

答えて

2

はただ、これらの変数を渡す:

function taco($name, $tag) { 
    echo $name; 
    echo $tag; 
} 
// and 
taco($name, $tag); 
+0

私はこれの最初の部分を試しました。うまく行かなかった。 – Atomiklan

+0

ここでこのコードを試してみることができます:https://3v4l.org/pjMq0私のために動作します;) –

+0

ああ、私は今問題を理解していると思います!関数に変数を渡すことはなく、関数内で変数を定義するだけでした。 – Atomiklan

1

あなたがPHPで設定を行うことができ、主に二つの方法があります。

最初に、各機能に渡すことのできる設定オブジェクトを作成します。これはちょっと大変だと思う人もいますが、グローバル変数を使って回避しています。

つまり、構成の詳細を保存しようとしているだけの場合、グローバル変数はnot a bad optionであり、前にこのサイトで説明しました。

あなたのユースケースについて考える必要があります。競合状態を生み出す可能性のあるものを扱っているのであれば、グローバル変数はもちろん悪い考えです。あなたのコード全体でいくつかの静的な情報を参照して保存したいだけなら...それは世界の終わりではありません。

+1

私はシングルトン設定オブジェクトを使ってこれらのオプションを組み合わせるのが好きです。そうすれば、必要に応じてコンフィグオブジェクトを注入することもできます。また、グローバルネームスペースに戻って、不要にしても構いません。 [ここの例](https://tehplayground.com/tIhpeSOQnTBBVvIW) –