-1

インスタンス化されたオブジェクトを指すキーが関連付けられた配列があります。例えば:

$MyArray = array();
$MyArray['Object_A'] = new Object_A();
$MyArray['Object_B'] = new Object_B();
$MyArray['Object_C'] = new Object_C();

この配列でやりたいことは、それらのオブジェクトへの参照として変数に抽出することです。

extract($MyArray, EXTR_REFS);

ステートメントは機能し、その配列内でそれらのオブジェクトを使用するのと同じように使用できます$Var = new Object();

$Object_A->SomeMethod();

ただし、定義した関数でそれらを抽出すると、その関数の外では使用できなくなります。以下の例のように関数内で使用できますが、外部では使用できません。

function ExtractObj(&$Array)
{
    extract($Array, EXTR_REFS);

    $Object_A->SomeMethod(); // This works.
}

そのため、その関数から抽出された変数を関数の外部から使用できるようにする方法が必要です。

function ExtractObj(&$Array)
{
    extract($Array, EXTR_REFS);
}

$Object_A->SomeMethod(); // Not working (Yet).

global注: 、static変数修飾子またはメソッドなどを使用しようとしましたが、すべてエラーが発生します。

4

1 に答える 1

1

はい。それで合っています。変数には関数スコープがあるため、関数の外では使用できません。変数をパラメーターとして関数に渡し、関数returnから必要な値を取得し、関数スコープに対応することを学びましょう。これにより、プログラムが 1 つの大きな乱雑なグローバル スコープよりも優れた保守性を備えたものになります。

于 2012-06-11T07:03:57.207 に答える