質問

うまくグローバル変数をクリアしました。してい $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配列です。

必ず宣言変数としてグローバル前を定義する値です。

はなまでの機能や、クラスです。グローバルをすることになりますので利用できるので、変数のプログラム。ここでは、グローバルに含まれていないかの機能はクラスの"グローバル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top