如果已经调用函数,如何阻止调用函数?

时间:2016-11-10 03:52:18

标签: php joomla

我正在使用joomla 3 ++。

我正在系统插件中调用我的组件类的方法。在调用此方法之前,我希望检查它是否已被调用?

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

if (class_exists('MyClass')) //在不同组件之间导航时始终为真

if (method_exists('MyClass', 'initialize')) //也总是如此

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

我面临的问题:

如果我不调用此MyClass::initialize(),我的系统插件未在其他组件上运行。

同时,其中一个组件说如果我在MyClass::initialize()调用onAfterInitialize()

,则已经加载了js文件

所以我想可能要避免

  

已加载xx.js文件,

我可以先检查这个MyClass::initialize()是否被调用。

1 个答案:

答案 0 :(得分:1)

你正在调用MyClass :: initialize()方法吗?在那个方法中使用

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');