2016-11-10 12 views
1

私はjoomla 3 ++を使用しています。既に呼び出されている関数を呼び出すのを防ぐには?

システムプラグインのコンポーネントのクラスからメソッドを呼び出しています。このメソッドを呼び出す前に、すでに呼び出されているかどうか確認したいと思います。

public function onAfterInitialise() 
{ 
    MyClass::initialize(); 
} 

if (class_exists('MyClass')) //常に真の異なるコンポーネント

if (method_exists('MyClass', 'initialize')) //常に真も

var_dump(MyClass::initialize()); //真

私が直面してる問題の間を移動するとき:

私がこの電話をしないと、私のシステムプラグインは他のコンポーネントで動いていませんMyClass::initialize()。同時に

、成分の一つは、私はだから私は、ロードされた

xx.jsファイルを避けるためにおそらく考えていonAfterInitialize()

MyClass::initialize()を呼び出した場合のjsファイルが既にロードされていると言います既に発行済みです。

最初に確認できるのはMyClass::initialize()です。

答えて

1

あなたはその方法の使用ではMyClass ::初期化()メソッドの右?

JFactory ::のgetSession()呼び出している - >セット( 'init_called'、1、 'your_componentを');システムの

あなたは今、あなたはすでにと呼ばれるその機能を確認することができます

public function onAfterInitialise() 
{ 
    $is_called = JFactory::getSession()->get('init_called','','your_component'); 
    if($is_called){ 
    //already called, do any other code 
    }else{ 
    // Not yet called, do any other code 
    } 
} 

をチェックすることができるプラグイン、ログアウトするまでセッションは明確ではないだろうことを確認してください。他の場所でクリアセッションを使用する

JFactory::getSession()->clear('init_called','your_component'); 
+0

可能であれば、initialize()メソッドに何も書き込まない方法はありますか?しかし、プラグイン自体のすべてをやりますか? – 112233

+0

yaa、可能であれば、メソッドを初期化してプラグインで貼り付け、$ this-> initialize()を呼び出します。それが動作します – Alagesan

関連する問題