質問
うまくグローバル変数をクリアしました。してい $screen
var設定ファイルを別のファイルこそが、 initSession()
定義される他のファイルです。の initSession()
ことを宣言し global $screen
その過程$画面の下に設定した値にスクリプト
住んでいます。
もよく、まだ$画面が再びそこに initSession()
, を用い価値を初めて使用されます。次のコードについて記載しています。がいいと思い出にいかがでしょうかを説明する。
$screen = "list1.inc"; // From model.php
require "controller.php"; // From model.php
initSession(); // From controller.php
global $screen; // From Include.Session.inc
echo $screen; // prints "list1.inc" // From anywhere
$screen = "delete1.inc"; // From model2.php
require "controller2.php"
initSession();
global $screen;
echo $screen; // prints "list1.inc"
更新:
がることをここに宣言します $screen
グローバル再び直前に必要な第二のモデルでは、$画面の更新を適正に initSession()
方法。不思議に思います。
解決
Global
なに可変。このトリッキー:-)
Global
化を実現していることを局所変数の使用 よって、いつも聞いている変数が高い範囲.
例:
<?php
$var = "test"; // this is accessible in all the rest of the code, even an included one
function foo2()
{
global $var;
echo $var; // this print "test"
$var = 'test2';
}
global $var; // this is totally useless, unless this file is included inside a class or function
function foo()
{
echo $var; // this print nothing, you are using a local var
$var = 'test3';
}
foo();
foo2();
echo $var; // this will print 'test2'
?>
こうしたグローバルなvarsほとんど良い方法がありました。できるコード99.99999%の時間をなくし、コードがどうしても必要であるが、続いてファジスコープ.回避 global
ができます。
他のヒント
global $foo
なくこの変数はグローバルで誰もが利用することが出来きます。 global $foo
手段"の範囲内でこの機能, のグローバル変数 $foo
".
私にとらえることは、まされているのかを明記して$画面から機能です。その場合ご使いこなせるよう、最低限必要な global $screen
各機能です。
置する必要があります"グローバル$画面にあらゆる機能を参照すだけでなく、各ファイルです。
また多くの変数でアクセスしたい時にタスクを多く使用しての機能をベースとすることを検討の"テオブジェクトを保持するもの:
//We're doing "foo", and we need importantString and relevantObject to do it
$fooContext = new StdClass(); //StdClass is an empty class
$fooContext->importantString = "a very important string";
$fooContext->relevantObject = new RelevantObject();
doFoo($fooContext);
今でこのオブジェクトのパラメータとしてすべての機能を確定します。なグローバル変数、関数の署名泊ます。でも、その後の交換は空StdClassクラスが実際には、関連する方法です。
のグローバル範囲に及ぶときに必要なファイルする必要がなくなり、より快適な利用を世界のキーワードな使用に変数を内部からの機能です。きは受け付けていません$GLOBALS配列です。
必ず宣言変数としてグローバル前を定義する値です。
はなまでの機能や、クラスです。グローバルをすることになりますので利用できるので、変数のプログラム。ここでは、グローバルに含まれていないかの機能はクラスの"グローバル