【问题标题】:Joomla 2.5 cant use $this in helper fileJoomla 2.5 不能在帮助文件中使用 $this
【发布时间】:2023-04-04 03:10:02
【问题描述】:

我在 joomla 2.5 中创建了一个组件和一个插件,该组件中有一个 Helper 文件,它将具有许多有用的功能,我计划调用它的一个函数,然后通过这个调用助手中的另一个函数代码:

$this->getinformation();

它给了我这个错误:

Fatal error: Call to undefined method

我的问题是:

  • 为什么我不能在 Joomla 的帮助程序中调用函数?
  • 如何在辅助类中调用函数?
  • 我在这段代码中是否遗漏了任何类结构?

【问题讨论】:

  • 首先为了使用 $this 你的帮助文件需要是一个类。它是一个类还是只是一个函数的集合。你的帮助文件是什么样的?

标签: joomla joomla2.5 joomla-extensions


【解决方案1】:

您必须包含帮助文件并使用类名调用函数

在插件或组件中添加以下行:

jimport( 'joomla.filesystem.folder' );
require_once JPATH_ROOT . '/components/com_xxxx/helper.php';

classname::functionname();

如果您正在处理同一个帮助文件,则意味着像这样调用

classname::functionname();

【讨论】:

  • 如果他正确设置了他的类并将它们定义为静态函数,这将起作用。
【解决方案2】:

帮助文件通常被静态调用,而不是使用 $this

首先创建您的帮助文件并添加如下方法:

Class myHelper {

    //This method can call other methods
    public static function myMethod($var) {

        //Call other method inside this class like this:
        self::myOtherMethod($var);

    }

    //This method is called by myMethod()
    public static function myOtherMethod($var) {

        //Put some code here

    }

}

只需将这样的帮助文件包含在您要使用的文档中即可:

require_once JPATH_COMPONENT.'/helpers/my_helper.php';

然后像这样使用它:

myHelper::myMethod($var);

myHelper::myOtherMethod($var);

【讨论】:

  • 那是静态函数的问题,我创建了一个类的实例并且问题消失了。它发生在你的回答之前,但无论如何谢谢你。
  • 不应该是self::myOtherMethod($var); 而不是self:myOtherMethod($var);
  • 是的,应该。固定的。谢谢。
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2013-04-28
  • 2014-04-13
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多