4

私はコードイグナイターを研究していました。そして私はこのスーパーオブジェクトに出くわします。

コードイグナイターには、クラスをロードしてインスタンス変数に格納する関数があります。新しいクラスまたは以前にロードされたクラスを含める必要があるたびに、コードイグナイターは最初にインスタンス配列でそれを検索し、見つからない場合はそれをロードしてインスタンス配列に含めます。

私の質問は、load_class関数でクラスを含めることができる場合のクラスです(この関数は最初にインスタンス配列を検索するため、同じクラスを何度も含めるオーバーヘッドが削減されます)。したがって、事前定義または読み込みを含めるようにスーパーオブジェクトを宣言する必要があります。新しいクラス。

これができるとき。

class CLASSNAME
{
  function functionname()
  {
     $object = load_class(classname, location);
     $object->callfunction();
  }
}

では、なぜこれを行う必要があるのか

class CLASSNAME
{
  function functionname()
  {
    $superobject = & get_instance();
    $superobject->classobject->function(); 
  }
}

スーパーオブジェクトを使用する利点を知りたいだけです。事前定義されたすべてのオブジェクトを含めるだけですか、それとも私が理解できなかったより深く有益なものを含めるだけですか。

前もって感謝します。

4

2 に答える 2

0

あなたが与えた例(ライブラリへの参照のみが必要な場合)では、メリットはありません。get_instance()はより一般的な (そして文書化された) 関数ですが、load_class()は内部使用のみです。

考えられる利点は、たとえば、コントローラーのプロパティを確認したり、モデル メソッドを呼び出したりする場合など、コントローラーが持つすべてget_instance()のものにアクセスできることです。

于 2012-12-10T14:36:11.453 に答える