0

Common.phpCodeIgniter フレームワークのファイル (system/core フォルダー)について話しています。

// ただし、質問に答える必要はありません!

私はコードを調べてきましたが、関数の開始時にこれらの特定の行を理解できませんでした。load_class

static $_classes = array();

// Does the class exist?  If so, we're done...
if (isset($_classes[$class]))
{
    return $_classes[$class];

私の疑問は、変数を空の配列に宣言し、その配列にキーが存在するかどうかをすぐに確認するのは無意味ではないでしょうか? staticまたは、キーワードに関連する何かが欠けていますか?

4

1 に答える 1

4

そのstatic変数の前の修飾子は、$_classes各関数呼び出しの後に値が持続することを意味します。

したがって、その関数が初めて呼び出されたとき$_classesはまだ存在しないため、空の配列として作成されます。

空であるため、クラスは存在しないため、ロードされて$_classes変数に入れられます。

関数が終了するとstatic、それは であるため、クリーンアップされず、その値が持続します。

次に関数が呼び出されたとき、PHP はそれが既に存在していることを認識しているため、空の配列として初期化され、関数が最後に呼び出されたときの内容がまだ含まれています。

詳細については、静的変数の使用を参照してください。

于 2012-08-11T19:36:52.513 に答える