これに関連する投稿がいくつかありますが、私が苦労している状況に近いものは何も見られません。
私は、元の設計者がいくつかの興味深い設計方法を採用した、かなり大きなコードベースを継承しました。定義されているクラスのメソッドを呼び出そうとしています。クラスファイル自体には、いくつかのグローバル変数が設定されています。このメソッドを関数から呼び出します。また、このファイルを含めました。メソッドを実行すると、グローバル変数は定義されなくなります。下記参照:
私のファイル:
<?php //myScript.php
echo("Calling foo(): ");
foo();
function foo() {
include '../../php/class.bar.php';
$bar = new bar();
$bar->doSomething();
}
?>
../../php/class.bar.php:
$GLOBAL_ARRAY_ONE[0] = 'Here I am';
$GLOBAL_ARRAY_ONE[1] = 'JT';
class bar {
public $itsFoo = array();
public $itsBar = array();
public function doSomething() {
global $GLOBAL_ARRAY_ONE;
$this->itsFoo[0] = $GLOBAL_ARRAY_ONE[0];
$this->itsFoo[1] = $GLOBAL_ARRAY_ONE[1];
var_dump($this->itsFoo);
}
}
したがって、「myScript.php」を実行すると、出力は次のようになります。calling foo(): NULL
私は個人的にそのようなスクリプトでグローバル配列を宣言しませんが、それらにアクセスできない理由はわかりません。
何か案は?ありがとう!