19

この質問は簡単そうに見えますが、どこにも答えが見つかりません...

PHPスクリプト/ファイルの最初に変数を作成したいと思います。

$variable = 'this is my variable';

この変数をスクリプト全体で使用できるようにして、すべてのクラス、メソッド、関数、含まれているスクリプトなどがこの変数を$variableとして簡単に呼び出すことができるようにします。

Class MyClass
{
  public function showvariable()
  {
     echo $variable;
  }
}

$ _SESSION、$ _ POST、$_GET変数はすべてそのように動作します。メソッドを記述して$_POSTを使用するだけで、機能します。しかし、スクリプトの冒頭で定義した$ variableを使用すると、「注意:未定義の変数:変数は...」と表示されます。クラスメソッドではなく関数を作成すると、それも表示されます。 。

書いてみました

global $variable = 'this is my variable';

しかし、その後、スクリプトはロードされませんでした...「HTTPエラー500(内部サーバーエラー):サーバーが要求を実行しようとしたときに、予期しない状態が発生しました。」

$ _POSTのように、変数を本当にグローバルにアクセスできるようにするにはどうすればよいですか?

なぜこれが必要なのですか?具体的にはフォームトークンとして使用する予定です。ページの上部でフォームトークンを$tokenとして生成し、ページの下部でそれをセッションに保存します。フォームを処理する前に、SESSIONトークンがPOSTトークンと一致するかどうかを確認します...そして、ページに複数のフォームがあることが多いので(上部ナビゲーションにログインフォーム、本体に登録フォーム)、便利にしたいと思います。各フォームで$tokenを呼び出します。私のフォーム要素はクラスまたは関数によって生成されることがありますが、変数を認識せず、定義されていないと言います。

4

4 に答える 4

17

私はそれを見つけました...-.-私​​はそれが十分に簡単だろうと思いました...

を使用して変数を呼び出す必要があります

$GLOBALS['variable'];

見つけたばかり...ついに... http://php.net/manual/en/reserved.variables.globals.php

8か月かそこらのように編集します。

CONSTANTSについて学びました!

define('name', 'value');

再割り当てすることはできません...私もそれを使用できると思います! http://www.php.net/manual/en/language.constants.php

于 2013-03-16T02:46:29.410 に答える
10

クラスや関数の外部で変数を定義するだけです。global次に、任意のクラスまたは関数内でキーワードを使用します。

<?php

// start of code

$my_var = 'Hellow Orld';

function myfunc() {
  global $my_var;
  echo $my_var; // echoes 'Hellow Orld';
}

function myOtherFunc() {
  var $my_var;
  echo $my_var; // echoes nothing, because $my_var is an undefined local variable.
}


class myClass {

  public function myFunc() {
    global $my_var;
    echo $my_var; // echoes 'Hellow Orld';
  }

  public function myOtherFunc() {
    var $my_var;
    echo $my_var; // echoes nothing.
  }

}

myFunc(); // "Hellow Orld"
myOtherFunc(); // no output
myClass->myFunc(); // "Hellow Orld"
myClass->myOtherFunc(); // no output

// end of file
?>
于 2013-03-16T02:56:49.317 に答える
2

任意の関数スコープでアクセスするには、グローバルを宣言する必要があります。

スクリプトの上部:

global $var;
$var= "this is my variable";

あなたのクラスで

...
public function showvariable(){
    global $var;
    echo $var;
}
...
于 2013-03-16T02:47:31.937 に答える
2

PHPでは、グローバル変数は、それらが使用される各関数内でそのように宣言する必要があります。参照:PHPマニュアル、変数スコープのセクション

そうは言っても、グローバル変数はしばしば悪い考えであり、ほとんどの場合、それらの使用を回避する方法があります。

于 2013-03-16T02:47:35.010 に答える