session.php から必要な変数はオブジェクトの一部ではないため、これはパブリック変数とプライベート変数の問題ではありません。これらは、(おそらく) グローバル スコープで宣言した単なる変数であり、function2.php でアクセスする必要があります。
最初: function2.php の内容は... 関数ですか? そうでない場合、そのファイルは、それが含まれていたスクリプト内の場所と同じスコープを持つ必要があり、問題なくアクセスできるはずです。
session.php 変数にアクセスする必要がある場所が関数またはオブジェクトである場合、いくつかの選択肢があります。
0. ファイルを再インクルードする
これがあなたが今やろうとしていることです。session.php にも関数定義が含まれており、一度関数を作成すると再定義できないため、失敗します。回避策として、変数定義を別のファイルに移動し、それを function2 に含めることができます。これは不器用ですが、単純です。
1. 関数を呼び出すときに変数を関数に渡します。
- 長所: シンプルで柔軟。
- 短所:関数の呼び出しが苦痛になります。それぞれを個別に渡すのではなく、すべてをパラメーターの単一の配列に入れることで、これを簡素化できます。
2.使用global
global $var1, $var2 ...
function2 の先頭に、スクリプトの他の場所で使用された変数をインポートするコマンドを追加するだけです。
これも非常に単純ですが、グローバル変数を使用することは、多くのプログラマーにだらしないと見なされ、他の場所でデバッグが困難なエラーが発生する可能性があります。
3. 定数を使用する
session.php で、共有する変数を定数として定義します。例: define("PASSWORD", "coolpassword123")
。定数は、関数やオブジェクトなどの内部から参照でき、宣言後に変更することはできません。例: echo(PASSWORD)
(引用符なし、$ なし)。
通常、定数は、1) 値を変更する必要がなく、2) 単純な数値または文字列値に固執できる限り、この種の問題に対する最良の解決策です。定数を配列、オブジェクトなどにすることはできません。