3

こんにちは、私は Joomla のコードを見て、この関数で何が起こっているのかを正確に把握しようとしています。

index.php は関数を呼び出します

$app = JFactory::getApplication('site');

jfactory.php コード

public static function getApplication($id = null, $config = array(), $prefix='J')
{
    if (!self::$application) {

        jimport('joomla.application.application');

        self::$application = JApplication::getInstance($id, $config, $prefix);
    }

    return self::$application;
}

application.php コード..

public static function getInstance($client, $config = array(), $prefix = 'J')
{
    static $instances;

    if (!isset($instances)) {
        $instances = array();
    }

    ....... more code ........

    return $instances[$client];
}

関数 getApplication で self:$application が使用されている理由がわかりません。

self::$application = JApplication::getInstance($id, $config, $prefix);

$application は常に null です。このアプローチを使用する目的は何ですか。に変更してみました

$var = JApplication::getInstance($id, $config, $prefix);

そしてそれを返しますが、うまくいきません。

より詳しい方が、ここで何が起こっているのかを可能な限り詳細に説明していただければ幸いです。どうもありがとう。

4

2 に答える 2

4

self::クラスの静的メンバーにアクセスするために使用されます。

したがって、この場合、self::$applicationを使用して JFactory 内のアプリケーション オブジェクトをキャッシュし、JApplication::getInstanceよりコストのかかる複数の呼び出しを回避します。

静的の詳細については、「静的キーワード」を参照してください。

于 2012-11-01T21:48:44.023 に答える
1

getApplication()- グローバル JApplication オブジェクトへの参照を返します。続きを読む

self::$member静的メンバーにアクセスするため。

ここに私が理解できる限りの説明があります。

if (!self::$application){ //<-check for the $application static variable of the the class

jimport('joomla.application.application');        
self::$application = JApplication::getInstance($id, $config, $prefix);

//if it does not exist get a new instance otherwise nothing happens because there is no else part 
}

return self::$application; //<- return the object(new one or the existing one)

これが行うことは、$application が存在する場合、関数呼び出しが保存されることです。そうでない場合は、新しいインスタンスを取得してください。続きを読む. これがお役に立てば幸いです。

于 2012-11-01T22:51:46.657 に答える