-1

ここで範囲の問題があります。なぜそれが機能しないのかわからないので、次のように設定しました:

関数.php

global $id;
$id = $_GET['id'];

index.php

require_once('functions.php');
echo $id;

functions.php 内で $id をエコーアウトできます。ただし、私の echo $id; index.php 内で空白が表示されます。何もない。

私は何を間違っていますか?

4

4 に答える 4

3

PHP では、このglobalキーワードを使用すると、ローカル スコープ内からグローバル スコープ内の変数を参照できます。たとえば、関数内のグローバル変数にアクセスできます。globalとにかくグローバルスコープにいるので、例では必要ありません。

あなたが持っているものの簡略化されたバージョンを私たちに見せているのではないかと思いますが、問題はあなたが私たちに見せていないコードにあります。

グローバルを使用してはいけない理由

このような混乱は、グローバルの使用が悪い考えであり、避けるべきである理由の一部です。

別の方法は、変数を明示的に渡すことです。たとえば、関数を呼び出したり、別のファイルからクラスをインスタンス化したりする場合は、変数をパラメーターとしてその関数またはコンストラクターに渡します。グローバル変数を使用する代わりにこれを行うと、トレイルを簡単にたどることができるため、どの関数がどの変数にアクセスしているかを簡単に追跡できます。

于 2011-10-26T03:01:51.293 に答える
1

関数の場合のみ、ファイル間のグローバルは必要ありません。

関数.php

<?php
$foobar = "Hello";
?>

インデックス.php

<?php
include('Functions.php');
echo $foobar;
?>
于 2011-10-26T02:59:22.840 に答える
0

@thomasrutterは正しい(+1)グローバル変数はA Bad Thingです。常に代替案を探してください。

おそらく、$ _ SESSION(これは同じことになると思います)を使用するか、静的変数を持つクラスを宣言してgetter()とsetter()を使用できますか?(後者のuiは間違いなくクリーンですが、$ _ SESSIONはあなたのデザインとよりよく結びつくかもしれません、私は言うことができません)

ところで、それfunctions.phpが単なる例の名前であったこと、または非常に単純なプロジェクトがあることを願っています。

そうfucntions.phしないと、pが非常に大きくなり、監視が困難になります。OOを使用する場合は、クラスごとに1つのファイルを使用します。それ以外の場合は、関数を個別のファイル(、、など)にグループ化してみてfile_management.phpください。databse.phpforms.php

始めたばかりの場合は、Netbeansを使用し、PhpDocコメントを使用てコードを文書化することをお勧めします。これにより、ブラウザーで表示できる優れた文書(男女共学の構造、宣言される場所、使用されるものなど)を生成できます。ここで、関数パラメーターと戻り値の説明など)

include()ところで、私はあなたが私が好むを使用していることに気づきましたrequire_once。はパフォーマンスを少し向上させるの_onceに役立ち、hterequireは、不足しているファイルをより迅速に認識できるようにします。

ああ、 NetBeansでうまく機能するXdebugの使い方を学びましょう。

于 2011-10-26T03:18:25.313 に答える
0

グローバルを使用するべきではありませんが、逆になっています。定義を含めた後、変数 global を宣言します。

file1.php:

$name = 'Josh';

file2.php:

require_once('file1.php');

global $name;

echo $name;
于 2011-10-26T02:56:51.880 に答える